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;