--- /dev/null
+package Case_Optimization_Pkg1 is
+
+ type Element is null record;
+
+ type Internal_Element_Kinds is
+ (Not_An_Element,
+ An_All_Calls_Remote_Pragma,
+ An_Asynchronous_Pragma,
+ An_Atomic_Pragma,
+ An_Atomic_Components_Pragma,
+ An_Attach_Handler_Pragma,
+ A_Controlled_Pragma,
+ A_Convention_Pragma,
+ A_Discard_Names_Pragma,
+ An_Elaborate_Pragma,
+ An_Elaborate_All_Pragma,
+ An_Elaborate_Body_Pragma,
+ An_Export_Pragma,
+ An_Import_Pragma,
+ An_Inline_Pragma,
+ An_Inspection_Point_Pragma,
+ An_Interrupt_Handler_Pragma,
+ An_Interrupt_Priority_Pragma,
+ A_Linker_Options_Pragma,
+ A_List_Pragma,
+ A_Locking_Policy_Pragma,
+ A_Normalize_Scalars_Pragma,
+ An_Optimize_Pragma,
+ A_Pack_Pragma,
+ A_Page_Pragma,
+ A_Preelaborate_Pragma,
+ A_Priority_Pragma,
+ A_Pure_Pragma,
+ A_Queuing_Policy_Pragma,
+ A_Remote_Call_Interface_Pragma,
+ A_Remote_Types_Pragma,
+ A_Restrictions_Pragma,
+ A_Reviewable_Pragma,
+ A_Shared_Passive_Pragma,
+ A_Storage_Size_Pragma,
+ A_Suppress_Pragma,
+ A_Task_Dispatching_Policy_Pragma,
+ A_Volatile_Pragma,
+ A_Volatile_Components_Pragma,
+ An_Assert_Pragma,
+ An_Assertion_Policy_Pragma,
+ A_Detect_Blocking_Pragma,
+ A_No_Return_Pragma,
+ A_Partition_Elaboration_Policy_Pragma,
+ A_Preelaborable_Initialization_Pragma,
+ A_Priority_Specific_Dispatching_Pragma,
+ A_Profile_Pragma,
+ A_Relative_Deadline_Pragma,
+ An_Unchecked_Union_Pragma,
+ An_Unsuppress_Pragma,
+ An_Implementation_Defined_Pragma,
+ An_Unknown_Pragma,
+ A_Defining_Identifier,
+ A_Defining_Character_Literal,
+ A_Defining_Enumeration_Literal,
+ A_Defining_And_Operator,
+ A_Defining_Or_Operator,
+ A_Defining_Xor_Operator,
+ A_Defining_Equal_Operator,
+ A_Defining_Not_Equal_Operator,
+ A_Defining_Less_Than_Operator,
+ A_Defining_Less_Than_Or_Equal_Operator,
+ A_Defining_Greater_Than_Operator,
+ A_Defining_Greater_Than_Or_Equal_Operator,
+ A_Defining_Plus_Operator,
+ A_Defining_Minus_Operator,
+ A_Defining_Concatenate_Operator,
+ A_Defining_Unary_Plus_Operator,
+ A_Defining_Unary_Minus_Operator,
+ A_Defining_Multiply_Operator,
+ A_Defining_Divide_Operator,
+ A_Defining_Mod_Operator,
+ A_Defining_Rem_Operator,
+ A_Defining_Exponentiate_Operator,
+ A_Defining_Abs_Operator,
+ A_Defining_Not_Operator,
+ A_Defining_Expanded_Name,
+ An_Ordinary_Type_Declaration,
+ A_Task_Type_Declaration,
+ A_Protected_Type_Declaration,
+ An_Incomplete_Type_Declaration,
+ A_Tagged_Incomplete_Type_Declaration,
+ A_Private_Type_Declaration,
+ A_Private_Extension_Declaration,
+ A_Subtype_Declaration,
+ A_Variable_Declaration,
+ A_Constant_Declaration,
+ A_Deferred_Constant_Declaration,
+ A_Single_Task_Declaration,
+ A_Single_Protected_Declaration,
+ An_Integer_Number_Declaration,
+ A_Real_Number_Declaration,
+ An_Enumeration_Literal_Specification,
+ A_Discriminant_Specification,
+ A_Component_Declaration,
+ A_Loop_Parameter_Specification,
+ A_Procedure_Declaration,
+ A_Function_Declaration,
+ A_Parameter_Specification,
+ A_Procedure_Body_Declaration,
+ A_Function_Body_Declaration,
+ A_Return_Object_Declaration,
+ A_Null_Procedure_Declaration,
+ A_Package_Declaration,
+ A_Package_Body_Declaration,
+ An_Object_Renaming_Declaration,
+ An_Exception_Renaming_Declaration,
+ A_Package_Renaming_Declaration,
+ A_Procedure_Renaming_Declaration,
+ A_Function_Renaming_Declaration,
+ A_Generic_Package_Renaming_Declaration,
+ A_Generic_Procedure_Renaming_Declaration,
+ A_Generic_Function_Renaming_Declaration,
+ A_Task_Body_Declaration,
+ A_Protected_Body_Declaration,
+ An_Entry_Declaration,
+ An_Entry_Body_Declaration,
+ An_Entry_Index_Specification,
+ A_Procedure_Body_Stub,
+ A_Function_Body_Stub,
+ A_Package_Body_Stub,
+ A_Task_Body_Stub,
+ A_Protected_Body_Stub,
+ An_Exception_Declaration,
+ A_Choice_Parameter_Specification,
+ A_Generic_Procedure_Declaration,
+ A_Generic_Function_Declaration,
+ A_Generic_Package_Declaration,
+ A_Package_Instantiation,
+ A_Procedure_Instantiation,
+ A_Function_Instantiation,
+ A_Formal_Object_Declaration,
+ A_Formal_Type_Declaration,
+ A_Formal_Procedure_Declaration,
+ A_Formal_Function_Declaration,
+ A_Formal_Package_Declaration,
+ A_Formal_Package_Declaration_With_Box,
+ A_Derived_Type_Definition,
+ A_Derived_Record_Extension_Definition,
+ An_Enumeration_Type_Definition,
+ A_Signed_Integer_Type_Definition,
+ A_Modular_Type_Definition,
+ A_Root_Integer_Definition,
+ A_Root_Real_Definition,
+ A_Universal_Integer_Definition,
+ A_Universal_Real_Definition,
+ A_Universal_Fixed_Definition,
+ A_Floating_Point_Definition,
+ An_Ordinary_Fixed_Point_Definition,
+ A_Decimal_Fixed_Point_Definition,
+ An_Unconstrained_Array_Definition,
+ A_Constrained_Array_Definition,
+ A_Record_Type_Definition,
+ A_Tagged_Record_Type_Definition,
+ An_Ordinary_Interface,
+ A_Limited_Interface,
+ A_Task_Interface,
+ A_Protected_Interface,
+ A_Synchronized_Interface,
+ A_Pool_Specific_Access_To_Variable,
+ An_Access_To_Variable,
+ An_Access_To_Constant,
+ An_Access_To_Procedure,
+ An_Access_To_Protected_Procedure,
+ An_Access_To_Function,
+ An_Access_To_Protected_Function,
+ A_Subtype_Indication,
+ A_Range_Attribute_Reference,
+ A_Simple_Expression_Range,
+ A_Digits_Constraint,
+ A_Delta_Constraint,
+ An_Index_Constraint,
+ A_Discriminant_Constraint,
+ A_Component_Definition,
+ A_Discrete_Subtype_Indication_As_Subtype_Definition,
+ A_Discrete_Range_Attribute_Reference_As_Subtype_Definition,
+ A_Discrete_Simple_Expression_Range_As_Subtype_Definition,
+ A_Discrete_Subtype_Indication,
+ A_Discrete_Range_Attribute_Reference,
+ A_Discrete_Simple_Expression_Range,
+ An_Unknown_Discriminant_Part,
+ A_Known_Discriminant_Part,
+ A_Record_Definition,
+ A_Null_Record_Definition,
+ A_Null_Component,
+ A_Variant_Part,
+ A_Variant,
+ An_Others_Choice,
+ An_Anonymous_Access_To_Variable,
+ An_Anonymous_Access_To_Constant,
+ An_Anonymous_Access_To_Procedure,
+ An_Anonymous_Access_To_Protected_Procedure,
+ An_Anonymous_Access_To_Function,
+ An_Anonymous_Access_To_Protected_Function,
+ A_Private_Type_Definition,
+ A_Tagged_Private_Type_Definition,
+ A_Private_Extension_Definition,
+ A_Task_Definition,
+ A_Protected_Definition,
+ A_Formal_Private_Type_Definition,
+ A_Formal_Tagged_Private_Type_Definition,
+ A_Formal_Derived_Type_Definition,
+ A_Formal_Discrete_Type_Definition,
+ A_Formal_Signed_Integer_Type_Definition,
+ A_Formal_Modular_Type_Definition,
+ A_Formal_Floating_Point_Definition,
+ A_Formal_Ordinary_Fixed_Point_Definition,
+ A_Formal_Decimal_Fixed_Point_Definition,
+ A_Formal_Ordinary_Interface,
+ A_Formal_Limited_Interface,
+ A_Formal_Task_Interface,
+ A_Formal_Protected_Interface,
+ A_Formal_Synchronized_Interface,
+ A_Formal_Unconstrained_Array_Definition,
+ A_Formal_Constrained_Array_Definition,
+ A_Formal_Pool_Specific_Access_To_Variable,
+ A_Formal_Access_To_Variable,
+ A_Formal_Access_To_Constant,
+ A_Formal_Access_To_Procedure,
+ A_Formal_Access_To_Protected_Procedure,
+ A_Formal_Access_To_Function,
+ A_Formal_Access_To_Protected_Function,
+ An_Integer_Literal,
+ A_Real_Literal,
+ A_String_Literal,
+ An_Identifier,
+ An_And_Operator,
+ An_Or_Operator,
+ An_Xor_Operator,
+ An_Equal_Operator,
+ A_Not_Equal_Operator,
+ A_Less_Than_Operator,
+ A_Less_Than_Or_Equal_Operator,
+ A_Greater_Than_Operator,
+ A_Greater_Than_Or_Equal_Operator,
+ A_Plus_Operator,
+ A_Minus_Operator,
+ A_Concatenate_Operator,
+ A_Unary_Plus_Operator,
+ A_Unary_Minus_Operator,
+ A_Multiply_Operator,
+ A_Divide_Operator,
+ A_Mod_Operator,
+ A_Rem_Operator,
+ An_Exponentiate_Operator,
+ An_Abs_Operator,
+ A_Not_Operator,
+ A_Character_Literal,
+ An_Enumeration_Literal,
+ An_Explicit_Dereference,
+ A_Function_Call,
+ An_Indexed_Component,
+ A_Slice,
+ A_Selected_Component,
+ An_Access_Attribute,
+ An_Address_Attribute,
+ An_Adjacent_Attribute,
+ An_Aft_Attribute,
+ An_Alignment_Attribute,
+ A_Base_Attribute,
+ A_Bit_Order_Attribute,
+ A_Body_Version_Attribute,
+ A_Callable_Attribute,
+ A_Caller_Attribute,
+ A_Ceiling_Attribute,
+ A_Class_Attribute,
+ A_Component_Size_Attribute,
+ A_Compose_Attribute,
+ A_Constrained_Attribute,
+ A_Copy_Sign_Attribute,
+ A_Count_Attribute,
+ A_Definite_Attribute,
+ A_Delta_Attribute,
+ A_Denorm_Attribute,
+ A_Digits_Attribute,
+ An_Exponent_Attribute,
+ An_External_Tag_Attribute,
+ A_First_Attribute,
+ A_First_Bit_Attribute,
+ A_Floor_Attribute,
+ A_Fore_Attribute,
+ A_Fraction_Attribute,
+ An_Identity_Attribute,
+ An_Image_Attribute,
+ An_Input_Attribute,
+ A_Last_Attribute,
+ A_Last_Bit_Attribute,
+ A_Leading_Part_Attribute,
+ A_Length_Attribute,
+ A_Machine_Attribute,
+ A_Machine_Emax_Attribute,
+ A_Machine_Emin_Attribute,
+ A_Machine_Mantissa_Attribute,
+ A_Machine_Overflows_Attribute,
+ A_Machine_Radix_Attribute,
+ A_Machine_Rounds_Attribute,
+ A_Max_Attribute,
+ A_Max_Size_In_Storage_Elements_Attribute,
+ A_Min_Attribute,
+ A_Model_Attribute,
+ A_Model_Emin_Attribute,
+ A_Model_Epsilon_Attribute,
+ A_Model_Mantissa_Attribute,
+ A_Model_Small_Attribute,
+ A_Modulus_Attribute,
+ An_Output_Attribute,
+ A_Partition_ID_Attribute,
+ A_Pos_Attribute,
+ A_Position_Attribute,
+ A_Pred_Attribute,
+ A_Range_Attribute,
+ A_Read_Attribute,
+ A_Remainder_Attribute,
+ A_Round_Attribute,
+ A_Rounding_Attribute,
+ A_Safe_First_Attribute,
+ A_Safe_Last_Attribute,
+ A_Scale_Attribute,
+ A_Scaling_Attribute,
+ A_Signed_Zeros_Attribute,
+ A_Size_Attribute,
+ A_Small_Attribute,
+ A_Storage_Pool_Attribute,
+ A_Storage_Size_Attribute,
+ A_Succ_Attribute,
+ A_Tag_Attribute,
+ A_Terminated_Attribute,
+ A_Truncation_Attribute,
+ An_Unbiased_Rounding_Attribute,
+ An_Unchecked_Access_Attribute,
+ A_Val_Attribute,
+ A_Valid_Attribute,
+ A_Value_Attribute,
+ A_Version_Attribute,
+ A_Wide_Image_Attribute,
+ A_Wide_Value_Attribute,
+ A_Wide_Width_Attribute,
+ A_Width_Attribute,
+ A_Write_Attribute,
+ A_Machine_Rounding_Attribute,
+ A_Mod_Attribute,
+ A_Priority_Attribute,
+ A_Stream_Size_Attribute,
+ A_Wide_Wide_Image_Attribute,
+ A_Wide_Wide_Value_Attribute,
+ A_Wide_Wide_Width_Attribute,
+ An_Implementation_Defined_Attribute,
+ An_Unknown_Attribute,
+ A_Record_Aggregate,
+ An_Extension_Aggregate,
+ A_Positional_Array_Aggregate,
+ A_Named_Array_Aggregate,
+ An_And_Then_Short_Circuit,
+ An_Or_Else_Short_Circuit,
+ An_In_Range_Membership_Test,
+ A_Not_In_Range_Membership_Test,
+ An_In_Type_Membership_Test,
+ A_Not_In_Type_Membership_Test,
+ A_Null_Literal,
+ A_Parenthesized_Expression,
+ A_Type_Conversion,
+ A_Qualified_Expression,
+ An_Allocation_From_Subtype,
+ An_Allocation_From_Qualified_Expression,
+ A_Pragma_Argument_Association,
+ A_Discriminant_Association,
+ A_Record_Component_Association,
+ An_Array_Component_Association,
+ A_Parameter_Association,
+ A_Generic_Association,
+ A_Null_Statement,
+ An_Assignment_Statement,
+ An_If_Statement,
+ A_Case_Statement,
+ A_Loop_Statement,
+ A_While_Loop_Statement,
+ A_For_Loop_Statement,
+ A_Block_Statement,
+ An_Exit_Statement,
+ A_Goto_Statement,
+ A_Procedure_Call_Statement,
+ A_Return_Statement,
+ An_Extended_Return_Statement,
+ An_Accept_Statement,
+ An_Entry_Call_Statement,
+ A_Requeue_Statement,
+ A_Requeue_Statement_With_Abort,
+ A_Delay_Until_Statement,
+ A_Delay_Relative_Statement,
+ A_Terminate_Alternative_Statement,
+ A_Selective_Accept_Statement,
+ A_Timed_Entry_Call_Statement,
+ A_Conditional_Entry_Call_Statement,
+ An_Asynchronous_Select_Statement,
+ An_Abort_Statement,
+ A_Raise_Statement,
+ A_Code_Statement,
+ An_If_Path,
+ An_Elsif_Path,
+ An_Else_Path,
+ A_Case_Path,
+ A_Select_Path,
+ An_Or_Path,
+ A_Then_Abort_Path,
+ A_Use_Package_Clause,
+ A_Use_Type_Clause,
+ A_With_Clause,
+ An_Attribute_Definition_Clause,
+ An_Enumeration_Representation_Clause,
+ A_Record_Representation_Clause,
+ An_At_Clause,
+ A_Component_Clause,
+ An_Exception_Handler,
+ Non_Trivial_Mapping,
+ Not_Implemented_Mapping,
+ Trivial_Mapping,
+ No_Mapping);
+
+ subtype Internal_Expression_Kinds is Internal_Element_Kinds
+ range An_Integer_Literal .. An_Allocation_From_Qualified_Expression;
+
+ subtype Internal_Operator_Symbol_Kinds is Internal_Expression_Kinds
+ range An_And_Operator .. A_Not_Operator;
+
+ function Int_Kind (E : Element) return Internal_Element_Kinds;
+
+end Case_Optimization_Pkg1;