<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:vwservices/Ada"
xmlns:ns="urn:vwservices/Ada">

   <xsd:annotation>
      <xsd:documentation xml:lang="en">

         XML Schema (XSD) for Ada.

         This file was generated by the gnat2xsd tool.

         gnat2xsd Copyright (C) 2012-2016, AdaCore, Inc.

         This schema is open source and is licensed under the Eclipse Public
         License (EPL). See http://www.eclipse.org/legal/epl-v10.html


         There are several sections below:

             Basic Types. General-purpose elements used everywhere.

             Abstract Classes. Unions of concrete types.

             List Types. Lists of abstract class types.

             Boolean Elements. These indicate that the corresponding
             query is True; False is indicated by Nil.

             Defining Occurrences. Elements for defining occurrences,
             such as Defining_Identifier.

             Usage Occurrences. Elements for usage occurrences
             (references to defining occurrences), such as Identifier.

             Other Elements. All syntactic structures that dont fall
             under defining or usage occurrences.

      </xsd:documentation>
   </xsd:annotation>


   <!-- ================================================================ -->
   <!-- Basic Types -->

   <xsd:complexType name="Source_Location">
      <xsd:attribute name="line" type="xsd:positiveInteger" use="required"/>
      <xsd:attribute name="col" type="xsd:positiveInteger" use="required"/>
      <xsd:attribute name="endline" type="xsd:nonNegativeInteger" use="required"/>
      <xsd:attribute name="endcol" type="xsd:nonNegativeInteger" use="required"/>
   </xsd:complexType>

   <xsd:element name="not_an_element" type="Not_An_Element"/>

   <xsd:complexType name="Not_An_Element">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="compilation_unit" type="Compilation_Unit"/>

   <xsd:complexType name="Compilation_Unit">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="context_clause_elements_ql" type="Context_Clause_List"/>
         <xsd:element name="unit_declaration_q" type="Declaration_Class"/>
         <xsd:element name="pragmas_after_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="unit_kind" type="xsd:string" use="required"/>
      <xsd:attribute name="unit_class" type="xsd:string" use="required"/>
      <xsd:attribute name="unit_origin" type="xsd:string" use="required"/>
      <xsd:attribute name="unit_full_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="source_file" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <!-- ================================================================ -->
   <!-- Abstract Classes -->

   <xsd:complexType name="Element_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="defining_identifier"/>
         <xsd:element ref="defining_character_literal"/>
         <xsd:element ref="defining_enumeration_literal"/>
         <xsd:element ref="defining_and_operator"/>
         <xsd:element ref="defining_or_operator"/>
         <xsd:element ref="defining_xor_operator"/>
         <xsd:element ref="defining_equal_operator"/>
         <xsd:element ref="defining_not_equal_operator"/>
         <xsd:element ref="defining_less_than_operator"/>
         <xsd:element ref="defining_less_than_or_equal_operator"/>
         <xsd:element ref="defining_greater_than_operator"/>
         <xsd:element ref="defining_greater_than_or_equal_operator"/>
         <xsd:element ref="defining_plus_operator"/>
         <xsd:element ref="defining_minus_operator"/>
         <xsd:element ref="defining_concatenate_operator"/>
         <xsd:element ref="defining_unary_plus_operator"/>
         <xsd:element ref="defining_unary_minus_operator"/>
         <xsd:element ref="defining_multiply_operator"/>
         <xsd:element ref="defining_divide_operator"/>
         <xsd:element ref="defining_mod_operator"/>
         <xsd:element ref="defining_rem_operator"/>
         <xsd:element ref="defining_exponentiate_operator"/>
         <xsd:element ref="defining_abs_operator"/>
         <xsd:element ref="defining_not_operator"/>
         <xsd:element ref="defining_expanded_name"/>
         <xsd:element ref="ordinary_type_declaration"/>
         <xsd:element ref="task_type_declaration"/>
         <xsd:element ref="protected_type_declaration"/>
         <xsd:element ref="incomplete_type_declaration"/>
         <xsd:element ref="tagged_incomplete_type_declaration"/>
         <xsd:element ref="private_type_declaration"/>
         <xsd:element ref="private_extension_declaration"/>
         <xsd:element ref="subtype_declaration"/>
         <xsd:element ref="variable_declaration"/>
         <xsd:element ref="constant_declaration"/>
         <xsd:element ref="deferred_constant_declaration"/>
         <xsd:element ref="single_task_declaration"/>
         <xsd:element ref="single_protected_declaration"/>
         <xsd:element ref="integer_number_declaration"/>
         <xsd:element ref="real_number_declaration"/>
         <xsd:element ref="enumeration_literal_specification"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="loop_parameter_specification"/>
         <xsd:element ref="generalized_iterator_specification"/>
         <xsd:element ref="element_iterator_specification"/>
         <xsd:element ref="procedure_declaration"/>
         <xsd:element ref="function_declaration"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:element ref="procedure_body_declaration"/>
         <xsd:element ref="function_body_declaration"/>
         <xsd:element ref="return_variable_specification"/>
         <xsd:element ref="return_constant_specification"/>
         <xsd:element ref="null_procedure_declaration"/>
         <xsd:element ref="expression_function_declaration"/>
         <xsd:element ref="package_declaration"/>
         <xsd:element ref="package_body_declaration"/>
         <xsd:element ref="object_renaming_declaration"/>
         <xsd:element ref="exception_renaming_declaration"/>
         <xsd:element ref="package_renaming_declaration"/>
         <xsd:element ref="procedure_renaming_declaration"/>
         <xsd:element ref="function_renaming_declaration"/>
         <xsd:element ref="generic_package_renaming_declaration"/>
         <xsd:element ref="generic_procedure_renaming_declaration"/>
         <xsd:element ref="generic_function_renaming_declaration"/>
         <xsd:element ref="task_body_declaration"/>
         <xsd:element ref="protected_body_declaration"/>
         <xsd:element ref="entry_declaration"/>
         <xsd:element ref="entry_body_declaration"/>
         <xsd:element ref="entry_index_specification"/>
         <xsd:element ref="procedure_body_stub"/>
         <xsd:element ref="function_body_stub"/>
         <xsd:element ref="package_body_stub"/>
         <xsd:element ref="task_body_stub"/>
         <xsd:element ref="protected_body_stub"/>
         <xsd:element ref="exception_declaration"/>
         <xsd:element ref="choice_parameter_specification"/>
         <xsd:element ref="generic_procedure_declaration"/>
         <xsd:element ref="generic_function_declaration"/>
         <xsd:element ref="generic_package_declaration"/>
         <xsd:element ref="package_instantiation"/>
         <xsd:element ref="procedure_instantiation"/>
         <xsd:element ref="function_instantiation"/>
         <xsd:element ref="formal_object_declaration"/>
         <xsd:element ref="formal_type_declaration"/>
         <xsd:element ref="formal_incomplete_type_declaration"/>
         <xsd:element ref="formal_procedure_declaration"/>
         <xsd:element ref="formal_function_declaration"/>
         <xsd:element ref="formal_package_declaration"/>
         <xsd:element ref="formal_package_declaration_with_box"/>
         <xsd:element ref="derived_type_definition"/>
         <xsd:element ref="derived_record_extension_definition"/>
         <xsd:element ref="enumeration_type_definition"/>
         <xsd:element ref="signed_integer_type_definition"/>
         <xsd:element ref="modular_type_definition"/>
         <xsd:element ref="root_integer_definition"/>
         <xsd:element ref="root_real_definition"/>
         <xsd:element ref="universal_integer_definition"/>
         <xsd:element ref="universal_real_definition"/>
         <xsd:element ref="universal_fixed_definition"/>
         <xsd:element ref="floating_point_definition"/>
         <xsd:element ref="ordinary_fixed_point_definition"/>
         <xsd:element ref="decimal_fixed_point_definition"/>
         <xsd:element ref="unconstrained_array_definition"/>
         <xsd:element ref="constrained_array_definition"/>
         <xsd:element ref="record_type_definition"/>
         <xsd:element ref="tagged_record_type_definition"/>
         <xsd:element ref="ordinary_interface"/>
         <xsd:element ref="limited_interface"/>
         <xsd:element ref="task_interface"/>
         <xsd:element ref="protected_interface"/>
         <xsd:element ref="synchronized_interface"/>
         <xsd:element ref="pool_specific_access_to_variable"/>
         <xsd:element ref="access_to_variable"/>
         <xsd:element ref="access_to_constant"/>
         <xsd:element ref="access_to_procedure"/>
         <xsd:element ref="access_to_protected_procedure"/>
         <xsd:element ref="access_to_function"/>
         <xsd:element ref="access_to_protected_function"/>
         <xsd:element ref="subtype_indication"/>
         <xsd:element ref="range_attribute_reference"/>
         <xsd:element ref="simple_expression_range"/>
         <xsd:element ref="digits_constraint"/>
         <xsd:element ref="delta_constraint"/>
         <xsd:element ref="index_constraint"/>
         <xsd:element ref="discriminant_constraint"/>
         <xsd:element ref="component_definition"/>
         <xsd:element ref="discrete_subtype_indication_as_subtype_definition"/>
         <xsd:element ref="discrete_range_attribute_reference_as_subtype_definition"/>
         <xsd:element ref="discrete_simple_expression_range_as_subtype_definition"/>
         <xsd:element ref="discrete_subtype_indication"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="unknown_discriminant_part"/>
         <xsd:element ref="known_discriminant_part"/>
         <xsd:element ref="record_definition"/>
         <xsd:element ref="null_record_definition"/>
         <xsd:element ref="null_component"/>
         <xsd:element ref="variant_part"/>
         <xsd:element ref="variant"/>
         <xsd:element ref="others_choice"/>
         <xsd:element ref="anonymous_access_to_variable"/>
         <xsd:element ref="anonymous_access_to_constant"/>
         <xsd:element ref="anonymous_access_to_procedure"/>
         <xsd:element ref="anonymous_access_to_protected_procedure"/>
         <xsd:element ref="anonymous_access_to_function"/>
         <xsd:element ref="anonymous_access_to_protected_function"/>
         <xsd:element ref="private_type_definition"/>
         <xsd:element ref="tagged_private_type_definition"/>
         <xsd:element ref="private_extension_definition"/>
         <xsd:element ref="task_definition"/>
         <xsd:element ref="protected_definition"/>
         <xsd:element ref="formal_private_type_definition"/>
         <xsd:element ref="formal_tagged_private_type_definition"/>
         <xsd:element ref="formal_derived_type_definition"/>
         <xsd:element ref="formal_discrete_type_definition"/>
         <xsd:element ref="formal_signed_integer_type_definition"/>
         <xsd:element ref="formal_modular_type_definition"/>
         <xsd:element ref="formal_floating_point_definition"/>
         <xsd:element ref="formal_ordinary_fixed_point_definition"/>
         <xsd:element ref="formal_decimal_fixed_point_definition"/>
         <xsd:element ref="formal_ordinary_interface"/>
         <xsd:element ref="formal_limited_interface"/>
         <xsd:element ref="formal_task_interface"/>
         <xsd:element ref="formal_protected_interface"/>
         <xsd:element ref="formal_synchronized_interface"/>
         <xsd:element ref="formal_unconstrained_array_definition"/>
         <xsd:element ref="formal_constrained_array_definition"/>
         <xsd:element ref="formal_pool_specific_access_to_variable"/>
         <xsd:element ref="formal_access_to_variable"/>
         <xsd:element ref="formal_access_to_constant"/>
         <xsd:element ref="formal_access_to_procedure"/>
         <xsd:element ref="formal_access_to_protected_procedure"/>
         <xsd:element ref="formal_access_to_function"/>
         <xsd:element ref="formal_access_to_protected_function"/>
         <xsd:element ref="aspect_specification"/>
         <xsd:element ref="box_expression"/>
         <xsd:element ref="integer_literal"/>
         <xsd:element ref="real_literal"/>
         <xsd:element ref="string_literal"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="and_operator"/>
         <xsd:element ref="or_operator"/>
         <xsd:element ref="xor_operator"/>
         <xsd:element ref="equal_operator"/>
         <xsd:element ref="not_equal_operator"/>
         <xsd:element ref="less_than_operator"/>
         <xsd:element ref="less_than_or_equal_operator"/>
         <xsd:element ref="greater_than_operator"/>
         <xsd:element ref="greater_than_or_equal_operator"/>
         <xsd:element ref="plus_operator"/>
         <xsd:element ref="minus_operator"/>
         <xsd:element ref="concatenate_operator"/>
         <xsd:element ref="unary_plus_operator"/>
         <xsd:element ref="unary_minus_operator"/>
         <xsd:element ref="multiply_operator"/>
         <xsd:element ref="divide_operator"/>
         <xsd:element ref="mod_operator"/>
         <xsd:element ref="rem_operator"/>
         <xsd:element ref="exponentiate_operator"/>
         <xsd:element ref="abs_operator"/>
         <xsd:element ref="not_operator"/>
         <xsd:element ref="character_literal"/>
         <xsd:element ref="enumeration_literal"/>
         <xsd:element ref="explicit_dereference"/>
         <xsd:element ref="function_call"/>
         <xsd:element ref="indexed_component"/>
         <xsd:element ref="slice"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="access_attribute"/>
         <xsd:element ref="address_attribute"/>
         <xsd:element ref="adjacent_attribute"/>
         <xsd:element ref="aft_attribute"/>
         <xsd:element ref="alignment_attribute"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="bit_order_attribute"/>
         <xsd:element ref="body_version_attribute"/>
         <xsd:element ref="callable_attribute"/>
         <xsd:element ref="caller_attribute"/>
         <xsd:element ref="ceiling_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="component_size_attribute"/>
         <xsd:element ref="compose_attribute"/>
         <xsd:element ref="constrained_attribute"/>
         <xsd:element ref="copy_sign_attribute"/>
         <xsd:element ref="count_attribute"/>
         <xsd:element ref="definite_attribute"/>
         <xsd:element ref="delta_attribute"/>
         <xsd:element ref="denorm_attribute"/>
         <xsd:element ref="digits_attribute"/>
         <xsd:element ref="exponent_attribute"/>
         <xsd:element ref="external_tag_attribute"/>
         <xsd:element ref="first_attribute"/>
         <xsd:element ref="first_bit_attribute"/>
         <xsd:element ref="floor_attribute"/>
         <xsd:element ref="fore_attribute"/>
         <xsd:element ref="fraction_attribute"/>
         <xsd:element ref="identity_attribute"/>
         <xsd:element ref="image_attribute"/>
         <xsd:element ref="input_attribute"/>
         <xsd:element ref="last_attribute"/>
         <xsd:element ref="last_bit_attribute"/>
         <xsd:element ref="leading_part_attribute"/>
         <xsd:element ref="length_attribute"/>
         <xsd:element ref="machine_attribute"/>
         <xsd:element ref="machine_emax_attribute"/>
         <xsd:element ref="machine_emin_attribute"/>
         <xsd:element ref="machine_mantissa_attribute"/>
         <xsd:element ref="machine_overflows_attribute"/>
         <xsd:element ref="machine_radix_attribute"/>
         <xsd:element ref="machine_rounds_attribute"/>
         <xsd:element ref="max_attribute"/>
         <xsd:element ref="max_size_in_storage_elements_attribute"/>
         <xsd:element ref="min_attribute"/>
         <xsd:element ref="model_attribute"/>
         <xsd:element ref="model_emin_attribute"/>
         <xsd:element ref="model_epsilon_attribute"/>
         <xsd:element ref="model_mantissa_attribute"/>
         <xsd:element ref="model_small_attribute"/>
         <xsd:element ref="modulus_attribute"/>
         <xsd:element ref="output_attribute"/>
         <xsd:element ref="partition_id_attribute"/>
         <xsd:element ref="pos_attribute"/>
         <xsd:element ref="position_attribute"/>
         <xsd:element ref="pred_attribute"/>
         <xsd:element ref="range_attribute"/>
         <xsd:element ref="read_attribute"/>
         <xsd:element ref="remainder_attribute"/>
         <xsd:element ref="round_attribute"/>
         <xsd:element ref="rounding_attribute"/>
         <xsd:element ref="safe_first_attribute"/>
         <xsd:element ref="safe_last_attribute"/>
         <xsd:element ref="scale_attribute"/>
         <xsd:element ref="scaling_attribute"/>
         <xsd:element ref="signed_zeros_attribute"/>
         <xsd:element ref="size_attribute"/>
         <xsd:element ref="small_attribute"/>
         <xsd:element ref="storage_pool_attribute"/>
         <xsd:element ref="storage_size_attribute"/>
         <xsd:element ref="succ_attribute"/>
         <xsd:element ref="tag_attribute"/>
         <xsd:element ref="terminated_attribute"/>
         <xsd:element ref="truncation_attribute"/>
         <xsd:element ref="unbiased_rounding_attribute"/>
         <xsd:element ref="unchecked_access_attribute"/>
         <xsd:element ref="val_attribute"/>
         <xsd:element ref="valid_attribute"/>
         <xsd:element ref="value_attribute"/>
         <xsd:element ref="version_attribute"/>
         <xsd:element ref="wide_image_attribute"/>
         <xsd:element ref="wide_value_attribute"/>
         <xsd:element ref="wide_width_attribute"/>
         <xsd:element ref="width_attribute"/>
         <xsd:element ref="write_attribute"/>
         <xsd:element ref="machine_rounding_attribute"/>
         <xsd:element ref="mod_attribute"/>
         <xsd:element ref="priority_attribute"/>
         <xsd:element ref="stream_size_attribute"/>
         <xsd:element ref="wide_wide_image_attribute"/>
         <xsd:element ref="wide_wide_value_attribute"/>
         <xsd:element ref="wide_wide_width_attribute"/>
         <xsd:element ref="max_alignment_for_allocation_attribute"/>
         <xsd:element ref="overlaps_storage_attribute"/>
         <xsd:element ref="implementation_defined_attribute"/>
         <xsd:element ref="unknown_attribute"/>
         <xsd:element ref="record_aggregate"/>
         <xsd:element ref="extension_aggregate"/>
         <xsd:element ref="positional_array_aggregate"/>
         <xsd:element ref="named_array_aggregate"/>
         <xsd:element ref="and_then_short_circuit"/>
         <xsd:element ref="or_else_short_circuit"/>
         <xsd:element ref="in_membership_test"/>
         <xsd:element ref="not_in_membership_test"/>
         <xsd:element ref="null_literal"/>
         <xsd:element ref="parenthesized_expression"/>
         <xsd:element ref="raise_expression"/>
         <xsd:element ref="type_conversion"/>
         <xsd:element ref="qualified_expression"/>
         <xsd:element ref="allocation_from_subtype"/>
         <xsd:element ref="allocation_from_qualified_expression"/>
         <xsd:element ref="case_expression"/>
         <xsd:element ref="if_expression"/>
         <xsd:element ref="for_all_quantified_expression"/>
         <xsd:element ref="for_some_quantified_expression"/>
         <xsd:element ref="pragma_argument_association"/>
         <xsd:element ref="discriminant_association"/>
         <xsd:element ref="record_component_association"/>
         <xsd:element ref="array_component_association"/>
         <xsd:element ref="parameter_association"/>
         <xsd:element ref="generic_association"/>
         <xsd:element ref="null_statement"/>
         <xsd:element ref="assignment_statement"/>
         <xsd:element ref="if_statement"/>
         <xsd:element ref="case_statement"/>
         <xsd:element ref="loop_statement"/>
         <xsd:element ref="while_loop_statement"/>
         <xsd:element ref="for_loop_statement"/>
         <xsd:element ref="block_statement"/>
         <xsd:element ref="exit_statement"/>
         <xsd:element ref="goto_statement"/>
         <xsd:element ref="procedure_call_statement"/>
         <xsd:element ref="return_statement"/>
         <xsd:element ref="extended_return_statement"/>
         <xsd:element ref="accept_statement"/>
         <xsd:element ref="entry_call_statement"/>
         <xsd:element ref="requeue_statement"/>
         <xsd:element ref="requeue_statement_with_abort"/>
         <xsd:element ref="delay_until_statement"/>
         <xsd:element ref="delay_relative_statement"/>
         <xsd:element ref="terminate_alternative_statement"/>
         <xsd:element ref="selective_accept_statement"/>
         <xsd:element ref="timed_entry_call_statement"/>
         <xsd:element ref="conditional_entry_call_statement"/>
         <xsd:element ref="asynchronous_select_statement"/>
         <xsd:element ref="abort_statement"/>
         <xsd:element ref="raise_statement"/>
         <xsd:element ref="code_statement"/>
         <xsd:element ref="if_path"/>
         <xsd:element ref="elsif_path"/>
         <xsd:element ref="else_path"/>
         <xsd:element ref="case_path"/>
         <xsd:element ref="select_path"/>
         <xsd:element ref="or_path"/>
         <xsd:element ref="then_abort_path"/>
         <xsd:element ref="case_expression_path"/>
         <xsd:element ref="if_expression_path"/>
         <xsd:element ref="elsif_expression_path"/>
         <xsd:element ref="else_expression_path"/>
         <xsd:element ref="use_package_clause"/>
         <xsd:element ref="use_type_clause"/>
         <xsd:element ref="use_all_type_clause"/>
         <xsd:element ref="with_clause"/>
         <xsd:element ref="attribute_definition_clause"/>
         <xsd:element ref="enumeration_representation_clause"/>
         <xsd:element ref="record_representation_clause"/>
         <xsd:element ref="at_clause"/>
         <xsd:element ref="component_clause"/>
         <xsd:element ref="exception_handler"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Association_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="pragma_argument_association"/>
         <xsd:element ref="discriminant_association"/>
         <xsd:element ref="record_component_association"/>
         <xsd:element ref="array_component_association"/>
         <xsd:element ref="parameter_association"/>
         <xsd:element ref="generic_association"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Constraint_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="range_attribute_reference"/>
         <xsd:element ref="simple_expression_range"/>
         <xsd:element ref="digits_constraint"/>
         <xsd:element ref="delta_constraint"/>
         <xsd:element ref="index_constraint"/>
         <xsd:element ref="discriminant_constraint"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Context_Clause_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="use_package_clause"/>
         <xsd:element ref="use_type_clause"/>
         <xsd:element ref="use_all_type_clause"/>
         <xsd:element ref="with_clause"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Declaration_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="ordinary_type_declaration"/>
         <xsd:element ref="task_type_declaration"/>
         <xsd:element ref="protected_type_declaration"/>
         <xsd:element ref="incomplete_type_declaration"/>
         <xsd:element ref="tagged_incomplete_type_declaration"/>
         <xsd:element ref="private_type_declaration"/>
         <xsd:element ref="private_extension_declaration"/>
         <xsd:element ref="subtype_declaration"/>
         <xsd:element ref="variable_declaration"/>
         <xsd:element ref="constant_declaration"/>
         <xsd:element ref="deferred_constant_declaration"/>
         <xsd:element ref="single_task_declaration"/>
         <xsd:element ref="single_protected_declaration"/>
         <xsd:element ref="integer_number_declaration"/>
         <xsd:element ref="real_number_declaration"/>
         <xsd:element ref="enumeration_literal_specification"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="loop_parameter_specification"/>
         <xsd:element ref="generalized_iterator_specification"/>
         <xsd:element ref="element_iterator_specification"/>
         <xsd:element ref="procedure_declaration"/>
         <xsd:element ref="function_declaration"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:element ref="procedure_body_declaration"/>
         <xsd:element ref="function_body_declaration"/>
         <xsd:element ref="return_variable_specification"/>
         <xsd:element ref="return_constant_specification"/>
         <xsd:element ref="null_procedure_declaration"/>
         <xsd:element ref="expression_function_declaration"/>
         <xsd:element ref="package_declaration"/>
         <xsd:element ref="package_body_declaration"/>
         <xsd:element ref="object_renaming_declaration"/>
         <xsd:element ref="exception_renaming_declaration"/>
         <xsd:element ref="package_renaming_declaration"/>
         <xsd:element ref="procedure_renaming_declaration"/>
         <xsd:element ref="function_renaming_declaration"/>
         <xsd:element ref="generic_package_renaming_declaration"/>
         <xsd:element ref="generic_procedure_renaming_declaration"/>
         <xsd:element ref="generic_function_renaming_declaration"/>
         <xsd:element ref="task_body_declaration"/>
         <xsd:element ref="protected_body_declaration"/>
         <xsd:element ref="entry_declaration"/>
         <xsd:element ref="entry_body_declaration"/>
         <xsd:element ref="entry_index_specification"/>
         <xsd:element ref="procedure_body_stub"/>
         <xsd:element ref="function_body_stub"/>
         <xsd:element ref="package_body_stub"/>
         <xsd:element ref="task_body_stub"/>
         <xsd:element ref="protected_body_stub"/>
         <xsd:element ref="exception_declaration"/>
         <xsd:element ref="choice_parameter_specification"/>
         <xsd:element ref="generic_procedure_declaration"/>
         <xsd:element ref="generic_function_declaration"/>
         <xsd:element ref="generic_package_declaration"/>
         <xsd:element ref="package_instantiation"/>
         <xsd:element ref="procedure_instantiation"/>
         <xsd:element ref="function_instantiation"/>
         <xsd:element ref="formal_object_declaration"/>
         <xsd:element ref="formal_type_declaration"/>
         <xsd:element ref="formal_incomplete_type_declaration"/>
         <xsd:element ref="formal_procedure_declaration"/>
         <xsd:element ref="formal_function_declaration"/>
         <xsd:element ref="formal_package_declaration"/>
         <xsd:element ref="formal_package_declaration_with_box"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Declarative_Item_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="ordinary_type_declaration"/>
         <xsd:element ref="task_type_declaration"/>
         <xsd:element ref="protected_type_declaration"/>
         <xsd:element ref="incomplete_type_declaration"/>
         <xsd:element ref="tagged_incomplete_type_declaration"/>
         <xsd:element ref="private_type_declaration"/>
         <xsd:element ref="private_extension_declaration"/>
         <xsd:element ref="subtype_declaration"/>
         <xsd:element ref="variable_declaration"/>
         <xsd:element ref="constant_declaration"/>
         <xsd:element ref="deferred_constant_declaration"/>
         <xsd:element ref="single_task_declaration"/>
         <xsd:element ref="single_protected_declaration"/>
         <xsd:element ref="integer_number_declaration"/>
         <xsd:element ref="real_number_declaration"/>
         <xsd:element ref="enumeration_literal_specification"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="loop_parameter_specification"/>
         <xsd:element ref="generalized_iterator_specification"/>
         <xsd:element ref="element_iterator_specification"/>
         <xsd:element ref="procedure_declaration"/>
         <xsd:element ref="function_declaration"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:element ref="procedure_body_declaration"/>
         <xsd:element ref="function_body_declaration"/>
         <xsd:element ref="return_variable_specification"/>
         <xsd:element ref="return_constant_specification"/>
         <xsd:element ref="null_procedure_declaration"/>
         <xsd:element ref="expression_function_declaration"/>
         <xsd:element ref="package_declaration"/>
         <xsd:element ref="package_body_declaration"/>
         <xsd:element ref="object_renaming_declaration"/>
         <xsd:element ref="exception_renaming_declaration"/>
         <xsd:element ref="package_renaming_declaration"/>
         <xsd:element ref="procedure_renaming_declaration"/>
         <xsd:element ref="function_renaming_declaration"/>
         <xsd:element ref="generic_package_renaming_declaration"/>
         <xsd:element ref="generic_procedure_renaming_declaration"/>
         <xsd:element ref="generic_function_renaming_declaration"/>
         <xsd:element ref="task_body_declaration"/>
         <xsd:element ref="protected_body_declaration"/>
         <xsd:element ref="entry_declaration"/>
         <xsd:element ref="entry_body_declaration"/>
         <xsd:element ref="entry_index_specification"/>
         <xsd:element ref="procedure_body_stub"/>
         <xsd:element ref="function_body_stub"/>
         <xsd:element ref="package_body_stub"/>
         <xsd:element ref="task_body_stub"/>
         <xsd:element ref="protected_body_stub"/>
         <xsd:element ref="exception_declaration"/>
         <xsd:element ref="choice_parameter_specification"/>
         <xsd:element ref="generic_procedure_declaration"/>
         <xsd:element ref="generic_function_declaration"/>
         <xsd:element ref="generic_package_declaration"/>
         <xsd:element ref="package_instantiation"/>
         <xsd:element ref="procedure_instantiation"/>
         <xsd:element ref="function_instantiation"/>
         <xsd:element ref="formal_object_declaration"/>
         <xsd:element ref="formal_type_declaration"/>
         <xsd:element ref="formal_incomplete_type_declaration"/>
         <xsd:element ref="formal_procedure_declaration"/>
         <xsd:element ref="formal_function_declaration"/>
         <xsd:element ref="formal_package_declaration"/>
         <xsd:element ref="formal_package_declaration_with_box"/>
         <xsd:element ref="use_package_clause"/>
         <xsd:element ref="use_type_clause"/>
         <xsd:element ref="use_all_type_clause"/>
         <xsd:element ref="with_clause"/>
         <xsd:element ref="attribute_definition_clause"/>
         <xsd:element ref="enumeration_representation_clause"/>
         <xsd:element ref="record_representation_clause"/>
         <xsd:element ref="at_clause"/>
         <xsd:element ref="component_clause"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Definition_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="derived_type_definition"/>
         <xsd:element ref="derived_record_extension_definition"/>
         <xsd:element ref="enumeration_type_definition"/>
         <xsd:element ref="signed_integer_type_definition"/>
         <xsd:element ref="modular_type_definition"/>
         <xsd:element ref="root_integer_definition"/>
         <xsd:element ref="root_real_definition"/>
         <xsd:element ref="universal_integer_definition"/>
         <xsd:element ref="universal_real_definition"/>
         <xsd:element ref="universal_fixed_definition"/>
         <xsd:element ref="floating_point_definition"/>
         <xsd:element ref="ordinary_fixed_point_definition"/>
         <xsd:element ref="decimal_fixed_point_definition"/>
         <xsd:element ref="unconstrained_array_definition"/>
         <xsd:element ref="constrained_array_definition"/>
         <xsd:element ref="record_type_definition"/>
         <xsd:element ref="tagged_record_type_definition"/>
         <xsd:element ref="ordinary_interface"/>
         <xsd:element ref="limited_interface"/>
         <xsd:element ref="task_interface"/>
         <xsd:element ref="protected_interface"/>
         <xsd:element ref="synchronized_interface"/>
         <xsd:element ref="pool_specific_access_to_variable"/>
         <xsd:element ref="access_to_variable"/>
         <xsd:element ref="access_to_constant"/>
         <xsd:element ref="access_to_procedure"/>
         <xsd:element ref="access_to_protected_procedure"/>
         <xsd:element ref="access_to_function"/>
         <xsd:element ref="access_to_protected_function"/>
         <xsd:element ref="subtype_indication"/>
         <xsd:element ref="range_attribute_reference"/>
         <xsd:element ref="simple_expression_range"/>
         <xsd:element ref="digits_constraint"/>
         <xsd:element ref="delta_constraint"/>
         <xsd:element ref="index_constraint"/>
         <xsd:element ref="discriminant_constraint"/>
         <xsd:element ref="component_definition"/>
         <xsd:element ref="discrete_subtype_indication_as_subtype_definition"/>
         <xsd:element ref="discrete_range_attribute_reference_as_subtype_definition"/>
         <xsd:element ref="discrete_simple_expression_range_as_subtype_definition"/>
         <xsd:element ref="discrete_subtype_indication"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="unknown_discriminant_part"/>
         <xsd:element ref="known_discriminant_part"/>
         <xsd:element ref="record_definition"/>
         <xsd:element ref="null_record_definition"/>
         <xsd:element ref="null_component"/>
         <xsd:element ref="variant_part"/>
         <xsd:element ref="variant"/>
         <xsd:element ref="others_choice"/>
         <xsd:element ref="anonymous_access_to_variable"/>
         <xsd:element ref="anonymous_access_to_constant"/>
         <xsd:element ref="anonymous_access_to_procedure"/>
         <xsd:element ref="anonymous_access_to_protected_procedure"/>
         <xsd:element ref="anonymous_access_to_function"/>
         <xsd:element ref="anonymous_access_to_protected_function"/>
         <xsd:element ref="private_type_definition"/>
         <xsd:element ref="tagged_private_type_definition"/>
         <xsd:element ref="private_extension_definition"/>
         <xsd:element ref="task_definition"/>
         <xsd:element ref="protected_definition"/>
         <xsd:element ref="formal_private_type_definition"/>
         <xsd:element ref="formal_tagged_private_type_definition"/>
         <xsd:element ref="formal_derived_type_definition"/>
         <xsd:element ref="formal_discrete_type_definition"/>
         <xsd:element ref="formal_signed_integer_type_definition"/>
         <xsd:element ref="formal_modular_type_definition"/>
         <xsd:element ref="formal_floating_point_definition"/>
         <xsd:element ref="formal_ordinary_fixed_point_definition"/>
         <xsd:element ref="formal_decimal_fixed_point_definition"/>
         <xsd:element ref="formal_ordinary_interface"/>
         <xsd:element ref="formal_limited_interface"/>
         <xsd:element ref="formal_task_interface"/>
         <xsd:element ref="formal_protected_interface"/>
         <xsd:element ref="formal_synchronized_interface"/>
         <xsd:element ref="formal_unconstrained_array_definition"/>
         <xsd:element ref="formal_constrained_array_definition"/>
         <xsd:element ref="formal_pool_specific_access_to_variable"/>
         <xsd:element ref="formal_access_to_variable"/>
         <xsd:element ref="formal_access_to_constant"/>
         <xsd:element ref="formal_access_to_procedure"/>
         <xsd:element ref="formal_access_to_protected_procedure"/>
         <xsd:element ref="formal_access_to_function"/>
         <xsd:element ref="formal_access_to_protected_function"/>
         <xsd:element ref="aspect_specification"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Discrete_Range_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discrete_subtype_indication"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Discrete_Subtype_Definition_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discrete_subtype_indication_as_subtype_definition"/>
         <xsd:element ref="discrete_range_attribute_reference_as_subtype_definition"/>
         <xsd:element ref="discrete_simple_expression_range_as_subtype_definition"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Defining_Name_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="defining_identifier"/>
         <xsd:element ref="defining_character_literal"/>
         <xsd:element ref="defining_enumeration_literal"/>
         <xsd:element ref="defining_and_operator"/>
         <xsd:element ref="defining_or_operator"/>
         <xsd:element ref="defining_xor_operator"/>
         <xsd:element ref="defining_equal_operator"/>
         <xsd:element ref="defining_not_equal_operator"/>
         <xsd:element ref="defining_less_than_operator"/>
         <xsd:element ref="defining_less_than_or_equal_operator"/>
         <xsd:element ref="defining_greater_than_operator"/>
         <xsd:element ref="defining_greater_than_or_equal_operator"/>
         <xsd:element ref="defining_plus_operator"/>
         <xsd:element ref="defining_minus_operator"/>
         <xsd:element ref="defining_concatenate_operator"/>
         <xsd:element ref="defining_unary_plus_operator"/>
         <xsd:element ref="defining_unary_minus_operator"/>
         <xsd:element ref="defining_multiply_operator"/>
         <xsd:element ref="defining_divide_operator"/>
         <xsd:element ref="defining_mod_operator"/>
         <xsd:element ref="defining_rem_operator"/>
         <xsd:element ref="defining_exponentiate_operator"/>
         <xsd:element ref="defining_abs_operator"/>
         <xsd:element ref="defining_not_operator"/>
         <xsd:element ref="defining_expanded_name"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Expression_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="others_choice"/>
         <xsd:element ref="box_expression"/>
         <xsd:element ref="integer_literal"/>
         <xsd:element ref="real_literal"/>
         <xsd:element ref="string_literal"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="and_operator"/>
         <xsd:element ref="or_operator"/>
         <xsd:element ref="xor_operator"/>
         <xsd:element ref="equal_operator"/>
         <xsd:element ref="not_equal_operator"/>
         <xsd:element ref="less_than_operator"/>
         <xsd:element ref="less_than_or_equal_operator"/>
         <xsd:element ref="greater_than_operator"/>
         <xsd:element ref="greater_than_or_equal_operator"/>
         <xsd:element ref="plus_operator"/>
         <xsd:element ref="minus_operator"/>
         <xsd:element ref="concatenate_operator"/>
         <xsd:element ref="unary_plus_operator"/>
         <xsd:element ref="unary_minus_operator"/>
         <xsd:element ref="multiply_operator"/>
         <xsd:element ref="divide_operator"/>
         <xsd:element ref="mod_operator"/>
         <xsd:element ref="rem_operator"/>
         <xsd:element ref="exponentiate_operator"/>
         <xsd:element ref="abs_operator"/>
         <xsd:element ref="not_operator"/>
         <xsd:element ref="character_literal"/>
         <xsd:element ref="enumeration_literal"/>
         <xsd:element ref="explicit_dereference"/>
         <xsd:element ref="function_call"/>
         <xsd:element ref="indexed_component"/>
         <xsd:element ref="slice"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="access_attribute"/>
         <xsd:element ref="address_attribute"/>
         <xsd:element ref="adjacent_attribute"/>
         <xsd:element ref="aft_attribute"/>
         <xsd:element ref="alignment_attribute"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="bit_order_attribute"/>
         <xsd:element ref="body_version_attribute"/>
         <xsd:element ref="callable_attribute"/>
         <xsd:element ref="caller_attribute"/>
         <xsd:element ref="ceiling_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="component_size_attribute"/>
         <xsd:element ref="compose_attribute"/>
         <xsd:element ref="constrained_attribute"/>
         <xsd:element ref="copy_sign_attribute"/>
         <xsd:element ref="count_attribute"/>
         <xsd:element ref="definite_attribute"/>
         <xsd:element ref="delta_attribute"/>
         <xsd:element ref="denorm_attribute"/>
         <xsd:element ref="digits_attribute"/>
         <xsd:element ref="exponent_attribute"/>
         <xsd:element ref="external_tag_attribute"/>
         <xsd:element ref="first_attribute"/>
         <xsd:element ref="first_bit_attribute"/>
         <xsd:element ref="floor_attribute"/>
         <xsd:element ref="fore_attribute"/>
         <xsd:element ref="fraction_attribute"/>
         <xsd:element ref="identity_attribute"/>
         <xsd:element ref="image_attribute"/>
         <xsd:element ref="input_attribute"/>
         <xsd:element ref="last_attribute"/>
         <xsd:element ref="last_bit_attribute"/>
         <xsd:element ref="leading_part_attribute"/>
         <xsd:element ref="length_attribute"/>
         <xsd:element ref="machine_attribute"/>
         <xsd:element ref="machine_emax_attribute"/>
         <xsd:element ref="machine_emin_attribute"/>
         <xsd:element ref="machine_mantissa_attribute"/>
         <xsd:element ref="machine_overflows_attribute"/>
         <xsd:element ref="machine_radix_attribute"/>
         <xsd:element ref="machine_rounds_attribute"/>
         <xsd:element ref="max_attribute"/>
         <xsd:element ref="max_size_in_storage_elements_attribute"/>
         <xsd:element ref="min_attribute"/>
         <xsd:element ref="model_attribute"/>
         <xsd:element ref="model_emin_attribute"/>
         <xsd:element ref="model_epsilon_attribute"/>
         <xsd:element ref="model_mantissa_attribute"/>
         <xsd:element ref="model_small_attribute"/>
         <xsd:element ref="modulus_attribute"/>
         <xsd:element ref="output_attribute"/>
         <xsd:element ref="partition_id_attribute"/>
         <xsd:element ref="pos_attribute"/>
         <xsd:element ref="position_attribute"/>
         <xsd:element ref="pred_attribute"/>
         <xsd:element ref="range_attribute"/>
         <xsd:element ref="read_attribute"/>
         <xsd:element ref="remainder_attribute"/>
         <xsd:element ref="round_attribute"/>
         <xsd:element ref="rounding_attribute"/>
         <xsd:element ref="safe_first_attribute"/>
         <xsd:element ref="safe_last_attribute"/>
         <xsd:element ref="scale_attribute"/>
         <xsd:element ref="scaling_attribute"/>
         <xsd:element ref="signed_zeros_attribute"/>
         <xsd:element ref="size_attribute"/>
         <xsd:element ref="small_attribute"/>
         <xsd:element ref="storage_pool_attribute"/>
         <xsd:element ref="storage_size_attribute"/>
         <xsd:element ref="succ_attribute"/>
         <xsd:element ref="tag_attribute"/>
         <xsd:element ref="terminated_attribute"/>
         <xsd:element ref="truncation_attribute"/>
         <xsd:element ref="unbiased_rounding_attribute"/>
         <xsd:element ref="unchecked_access_attribute"/>
         <xsd:element ref="val_attribute"/>
         <xsd:element ref="valid_attribute"/>
         <xsd:element ref="value_attribute"/>
         <xsd:element ref="version_attribute"/>
         <xsd:element ref="wide_image_attribute"/>
         <xsd:element ref="wide_value_attribute"/>
         <xsd:element ref="wide_width_attribute"/>
         <xsd:element ref="width_attribute"/>
         <xsd:element ref="write_attribute"/>
         <xsd:element ref="machine_rounding_attribute"/>
         <xsd:element ref="mod_attribute"/>
         <xsd:element ref="priority_attribute"/>
         <xsd:element ref="stream_size_attribute"/>
         <xsd:element ref="wide_wide_image_attribute"/>
         <xsd:element ref="wide_wide_value_attribute"/>
         <xsd:element ref="wide_wide_width_attribute"/>
         <xsd:element ref="max_alignment_for_allocation_attribute"/>
         <xsd:element ref="overlaps_storage_attribute"/>
         <xsd:element ref="implementation_defined_attribute"/>
         <xsd:element ref="unknown_attribute"/>
         <xsd:element ref="record_aggregate"/>
         <xsd:element ref="extension_aggregate"/>
         <xsd:element ref="positional_array_aggregate"/>
         <xsd:element ref="named_array_aggregate"/>
         <xsd:element ref="and_then_short_circuit"/>
         <xsd:element ref="or_else_short_circuit"/>
         <xsd:element ref="in_membership_test"/>
         <xsd:element ref="not_in_membership_test"/>
         <xsd:element ref="null_literal"/>
         <xsd:element ref="parenthesized_expression"/>
         <xsd:element ref="raise_expression"/>
         <xsd:element ref="type_conversion"/>
         <xsd:element ref="qualified_expression"/>
         <xsd:element ref="allocation_from_subtype"/>
         <xsd:element ref="allocation_from_qualified_expression"/>
         <xsd:element ref="case_expression"/>
         <xsd:element ref="if_expression"/>
         <xsd:element ref="for_all_quantified_expression"/>
         <xsd:element ref="for_some_quantified_expression"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Name_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="access_attribute"/>
         <xsd:element ref="address_attribute"/>
         <xsd:element ref="adjacent_attribute"/>
         <xsd:element ref="aft_attribute"/>
         <xsd:element ref="alignment_attribute"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="bit_order_attribute"/>
         <xsd:element ref="body_version_attribute"/>
         <xsd:element ref="callable_attribute"/>
         <xsd:element ref="caller_attribute"/>
         <xsd:element ref="ceiling_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="component_size_attribute"/>
         <xsd:element ref="compose_attribute"/>
         <xsd:element ref="constrained_attribute"/>
         <xsd:element ref="copy_sign_attribute"/>
         <xsd:element ref="count_attribute"/>
         <xsd:element ref="definite_attribute"/>
         <xsd:element ref="delta_attribute"/>
         <xsd:element ref="denorm_attribute"/>
         <xsd:element ref="digits_attribute"/>
         <xsd:element ref="exponent_attribute"/>
         <xsd:element ref="external_tag_attribute"/>
         <xsd:element ref="first_attribute"/>
         <xsd:element ref="first_bit_attribute"/>
         <xsd:element ref="floor_attribute"/>
         <xsd:element ref="fore_attribute"/>
         <xsd:element ref="fraction_attribute"/>
         <xsd:element ref="identity_attribute"/>
         <xsd:element ref="image_attribute"/>
         <xsd:element ref="input_attribute"/>
         <xsd:element ref="last_attribute"/>
         <xsd:element ref="last_bit_attribute"/>
         <xsd:element ref="leading_part_attribute"/>
         <xsd:element ref="length_attribute"/>
         <xsd:element ref="machine_attribute"/>
         <xsd:element ref="machine_emax_attribute"/>
         <xsd:element ref="machine_emin_attribute"/>
         <xsd:element ref="machine_mantissa_attribute"/>
         <xsd:element ref="machine_overflows_attribute"/>
         <xsd:element ref="machine_radix_attribute"/>
         <xsd:element ref="machine_rounds_attribute"/>
         <xsd:element ref="max_attribute"/>
         <xsd:element ref="max_size_in_storage_elements_attribute"/>
         <xsd:element ref="min_attribute"/>
         <xsd:element ref="model_attribute"/>
         <xsd:element ref="model_emin_attribute"/>
         <xsd:element ref="model_epsilon_attribute"/>
         <xsd:element ref="model_mantissa_attribute"/>
         <xsd:element ref="model_small_attribute"/>
         <xsd:element ref="modulus_attribute"/>
         <xsd:element ref="output_attribute"/>
         <xsd:element ref="partition_id_attribute"/>
         <xsd:element ref="pos_attribute"/>
         <xsd:element ref="position_attribute"/>
         <xsd:element ref="pred_attribute"/>
         <xsd:element ref="range_attribute"/>
         <xsd:element ref="read_attribute"/>
         <xsd:element ref="remainder_attribute"/>
         <xsd:element ref="round_attribute"/>
         <xsd:element ref="rounding_attribute"/>
         <xsd:element ref="safe_first_attribute"/>
         <xsd:element ref="safe_last_attribute"/>
         <xsd:element ref="scale_attribute"/>
         <xsd:element ref="scaling_attribute"/>
         <xsd:element ref="signed_zeros_attribute"/>
         <xsd:element ref="size_attribute"/>
         <xsd:element ref="small_attribute"/>
         <xsd:element ref="storage_pool_attribute"/>
         <xsd:element ref="storage_size_attribute"/>
         <xsd:element ref="succ_attribute"/>
         <xsd:element ref="tag_attribute"/>
         <xsd:element ref="terminated_attribute"/>
         <xsd:element ref="truncation_attribute"/>
         <xsd:element ref="unbiased_rounding_attribute"/>
         <xsd:element ref="unchecked_access_attribute"/>
         <xsd:element ref="val_attribute"/>
         <xsd:element ref="valid_attribute"/>
         <xsd:element ref="value_attribute"/>
         <xsd:element ref="version_attribute"/>
         <xsd:element ref="wide_image_attribute"/>
         <xsd:element ref="wide_value_attribute"/>
         <xsd:element ref="wide_width_attribute"/>
         <xsd:element ref="width_attribute"/>
         <xsd:element ref="write_attribute"/>
         <xsd:element ref="machine_rounding_attribute"/>
         <xsd:element ref="mod_attribute"/>
         <xsd:element ref="priority_attribute"/>
         <xsd:element ref="stream_size_attribute"/>
         <xsd:element ref="wide_wide_image_attribute"/>
         <xsd:element ref="wide_wide_value_attribute"/>
         <xsd:element ref="wide_wide_width_attribute"/>
         <xsd:element ref="max_alignment_for_allocation_attribute"/>
         <xsd:element ref="overlaps_storage_attribute"/>
         <xsd:element ref="implementation_defined_attribute"/>
         <xsd:element ref="unknown_attribute"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Path_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="if_path"/>
         <xsd:element ref="elsif_path"/>
         <xsd:element ref="else_path"/>
         <xsd:element ref="case_path"/>
         <xsd:element ref="select_path"/>
         <xsd:element ref="or_path"/>
         <xsd:element ref="then_abort_path"/>
         <xsd:element ref="case_expression_path"/>
         <xsd:element ref="if_expression_path"/>
         <xsd:element ref="elsif_expression_path"/>
         <xsd:element ref="else_expression_path"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Pragma_Element_Class">
      <xsd:choice maxOccurs="1">
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Range_Constraint_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="range_attribute_reference"/>
         <xsd:element ref="simple_expression_range"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Record_Component_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="null_component"/>
         <xsd:element ref="variant_part"/>
         <xsd:element ref="attribute_definition_clause"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Statement_Class">
      <xsd:choice maxOccurs="1">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="null_statement"/>
         <xsd:element ref="assignment_statement"/>
         <xsd:element ref="if_statement"/>
         <xsd:element ref="case_statement"/>
         <xsd:element ref="loop_statement"/>
         <xsd:element ref="while_loop_statement"/>
         <xsd:element ref="for_loop_statement"/>
         <xsd:element ref="block_statement"/>
         <xsd:element ref="exit_statement"/>
         <xsd:element ref="goto_statement"/>
         <xsd:element ref="procedure_call_statement"/>
         <xsd:element ref="return_statement"/>
         <xsd:element ref="extended_return_statement"/>
         <xsd:element ref="accept_statement"/>
         <xsd:element ref="entry_call_statement"/>
         <xsd:element ref="requeue_statement"/>
         <xsd:element ref="requeue_statement_with_abort"/>
         <xsd:element ref="delay_until_statement"/>
         <xsd:element ref="delay_relative_statement"/>
         <xsd:element ref="terminate_alternative_statement"/>
         <xsd:element ref="selective_accept_statement"/>
         <xsd:element ref="timed_entry_call_statement"/>
         <xsd:element ref="conditional_entry_call_statement"/>
         <xsd:element ref="asynchronous_select_statement"/>
         <xsd:element ref="abort_statement"/>
         <xsd:element ref="raise_statement"/>
         <xsd:element ref="code_statement"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:group name="pragmas_group">
      <xsd:choice>
         <xsd:element ref="all_calls_remote_pragma"/>
         <xsd:element ref="asynchronous_pragma"/>
         <xsd:element ref="atomic_pragma"/>
         <xsd:element ref="atomic_components_pragma"/>
         <xsd:element ref="attach_handler_pragma"/>
         <xsd:element ref="controlled_pragma"/>
         <xsd:element ref="convention_pragma"/>
         <xsd:element ref="discard_names_pragma"/>
         <xsd:element ref="elaborate_pragma"/>
         <xsd:element ref="elaborate_all_pragma"/>
         <xsd:element ref="elaborate_body_pragma"/>
         <xsd:element ref="export_pragma"/>
         <xsd:element ref="import_pragma"/>
         <xsd:element ref="inline_pragma"/>
         <xsd:element ref="inspection_point_pragma"/>
         <xsd:element ref="interrupt_handler_pragma"/>
         <xsd:element ref="interrupt_priority_pragma"/>
         <xsd:element ref="linker_options_pragma"/>
         <xsd:element ref="list_pragma"/>
         <xsd:element ref="locking_policy_pragma"/>
         <xsd:element ref="normalize_scalars_pragma"/>
         <xsd:element ref="optimize_pragma"/>
         <xsd:element ref="pack_pragma"/>
         <xsd:element ref="page_pragma"/>
         <xsd:element ref="preelaborate_pragma"/>
         <xsd:element ref="priority_pragma"/>
         <xsd:element ref="pure_pragma"/>
         <xsd:element ref="queuing_policy_pragma"/>
         <xsd:element ref="remote_call_interface_pragma"/>
         <xsd:element ref="remote_types_pragma"/>
         <xsd:element ref="restrictions_pragma"/>
         <xsd:element ref="reviewable_pragma"/>
         <xsd:element ref="shared_passive_pragma"/>
         <xsd:element ref="storage_size_pragma"/>
         <xsd:element ref="suppress_pragma"/>
         <xsd:element ref="task_dispatching_policy_pragma"/>
         <xsd:element ref="volatile_pragma"/>
         <xsd:element ref="volatile_components_pragma"/>
         <xsd:element ref="assert_pragma"/>
         <xsd:element ref="assertion_policy_pragma"/>
         <xsd:element ref="detect_blocking_pragma"/>
         <xsd:element ref="no_return_pragma"/>
         <xsd:element ref="partition_elaboration_policy_pragma"/>
         <xsd:element ref="preelaborable_initialization_pragma"/>
         <xsd:element ref="priority_specific_dispatching_pragma"/>
         <xsd:element ref="profile_pragma"/>
         <xsd:element ref="relative_deadline_pragma"/>
         <xsd:element ref="unchecked_union_pragma"/>
         <xsd:element ref="unsuppress_pragma"/>
         <xsd:element ref="default_storage_pool_pragma"/>
         <xsd:element ref="dispatching_domain_pragma"/>
         <xsd:element ref="cpu_pragma"/>
         <xsd:element ref="independent_pragma"/>
         <xsd:element ref="independent_components_pragma"/>
         <xsd:element ref="implementation_defined_pragma"/>
         <xsd:element ref="unknown_pragma"/>
      </xsd:choice>
   </xsd:group>


   <!-- ================================================================ -->
   <!-- List Types -->

   <xsd:complexType name="Element_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="defining_identifier"/>
         <xsd:element ref="defining_character_literal"/>
         <xsd:element ref="defining_enumeration_literal"/>
         <xsd:element ref="defining_and_operator"/>
         <xsd:element ref="defining_or_operator"/>
         <xsd:element ref="defining_xor_operator"/>
         <xsd:element ref="defining_equal_operator"/>
         <xsd:element ref="defining_not_equal_operator"/>
         <xsd:element ref="defining_less_than_operator"/>
         <xsd:element ref="defining_less_than_or_equal_operator"/>
         <xsd:element ref="defining_greater_than_operator"/>
         <xsd:element ref="defining_greater_than_or_equal_operator"/>
         <xsd:element ref="defining_plus_operator"/>
         <xsd:element ref="defining_minus_operator"/>
         <xsd:element ref="defining_concatenate_operator"/>
         <xsd:element ref="defining_unary_plus_operator"/>
         <xsd:element ref="defining_unary_minus_operator"/>
         <xsd:element ref="defining_multiply_operator"/>
         <xsd:element ref="defining_divide_operator"/>
         <xsd:element ref="defining_mod_operator"/>
         <xsd:element ref="defining_rem_operator"/>
         <xsd:element ref="defining_exponentiate_operator"/>
         <xsd:element ref="defining_abs_operator"/>
         <xsd:element ref="defining_not_operator"/>
         <xsd:element ref="defining_expanded_name"/>
         <xsd:element ref="ordinary_type_declaration"/>
         <xsd:element ref="task_type_declaration"/>
         <xsd:element ref="protected_type_declaration"/>
         <xsd:element ref="incomplete_type_declaration"/>
         <xsd:element ref="tagged_incomplete_type_declaration"/>
         <xsd:element ref="private_type_declaration"/>
         <xsd:element ref="private_extension_declaration"/>
         <xsd:element ref="subtype_declaration"/>
         <xsd:element ref="variable_declaration"/>
         <xsd:element ref="constant_declaration"/>
         <xsd:element ref="deferred_constant_declaration"/>
         <xsd:element ref="single_task_declaration"/>
         <xsd:element ref="single_protected_declaration"/>
         <xsd:element ref="integer_number_declaration"/>
         <xsd:element ref="real_number_declaration"/>
         <xsd:element ref="enumeration_literal_specification"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="loop_parameter_specification"/>
         <xsd:element ref="generalized_iterator_specification"/>
         <xsd:element ref="element_iterator_specification"/>
         <xsd:element ref="procedure_declaration"/>
         <xsd:element ref="function_declaration"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:element ref="procedure_body_declaration"/>
         <xsd:element ref="function_body_declaration"/>
         <xsd:element ref="return_variable_specification"/>
         <xsd:element ref="return_constant_specification"/>
         <xsd:element ref="null_procedure_declaration"/>
         <xsd:element ref="expression_function_declaration"/>
         <xsd:element ref="package_declaration"/>
         <xsd:element ref="package_body_declaration"/>
         <xsd:element ref="object_renaming_declaration"/>
         <xsd:element ref="exception_renaming_declaration"/>
         <xsd:element ref="package_renaming_declaration"/>
         <xsd:element ref="procedure_renaming_declaration"/>
         <xsd:element ref="function_renaming_declaration"/>
         <xsd:element ref="generic_package_renaming_declaration"/>
         <xsd:element ref="generic_procedure_renaming_declaration"/>
         <xsd:element ref="generic_function_renaming_declaration"/>
         <xsd:element ref="task_body_declaration"/>
         <xsd:element ref="protected_body_declaration"/>
         <xsd:element ref="entry_declaration"/>
         <xsd:element ref="entry_body_declaration"/>
         <xsd:element ref="entry_index_specification"/>
         <xsd:element ref="procedure_body_stub"/>
         <xsd:element ref="function_body_stub"/>
         <xsd:element ref="package_body_stub"/>
         <xsd:element ref="task_body_stub"/>
         <xsd:element ref="protected_body_stub"/>
         <xsd:element ref="exception_declaration"/>
         <xsd:element ref="choice_parameter_specification"/>
         <xsd:element ref="generic_procedure_declaration"/>
         <xsd:element ref="generic_function_declaration"/>
         <xsd:element ref="generic_package_declaration"/>
         <xsd:element ref="package_instantiation"/>
         <xsd:element ref="procedure_instantiation"/>
         <xsd:element ref="function_instantiation"/>
         <xsd:element ref="formal_object_declaration"/>
         <xsd:element ref="formal_type_declaration"/>
         <xsd:element ref="formal_incomplete_type_declaration"/>
         <xsd:element ref="formal_procedure_declaration"/>
         <xsd:element ref="formal_function_declaration"/>
         <xsd:element ref="formal_package_declaration"/>
         <xsd:element ref="formal_package_declaration_with_box"/>
         <xsd:element ref="derived_type_definition"/>
         <xsd:element ref="derived_record_extension_definition"/>
         <xsd:element ref="enumeration_type_definition"/>
         <xsd:element ref="signed_integer_type_definition"/>
         <xsd:element ref="modular_type_definition"/>
         <xsd:element ref="root_integer_definition"/>
         <xsd:element ref="root_real_definition"/>
         <xsd:element ref="universal_integer_definition"/>
         <xsd:element ref="universal_real_definition"/>
         <xsd:element ref="universal_fixed_definition"/>
         <xsd:element ref="floating_point_definition"/>
         <xsd:element ref="ordinary_fixed_point_definition"/>
         <xsd:element ref="decimal_fixed_point_definition"/>
         <xsd:element ref="unconstrained_array_definition"/>
         <xsd:element ref="constrained_array_definition"/>
         <xsd:element ref="record_type_definition"/>
         <xsd:element ref="tagged_record_type_definition"/>
         <xsd:element ref="ordinary_interface"/>
         <xsd:element ref="limited_interface"/>
         <xsd:element ref="task_interface"/>
         <xsd:element ref="protected_interface"/>
         <xsd:element ref="synchronized_interface"/>
         <xsd:element ref="pool_specific_access_to_variable"/>
         <xsd:element ref="access_to_variable"/>
         <xsd:element ref="access_to_constant"/>
         <xsd:element ref="access_to_procedure"/>
         <xsd:element ref="access_to_protected_procedure"/>
         <xsd:element ref="access_to_function"/>
         <xsd:element ref="access_to_protected_function"/>
         <xsd:element ref="subtype_indication"/>
         <xsd:element ref="range_attribute_reference"/>
         <xsd:element ref="simple_expression_range"/>
         <xsd:element ref="digits_constraint"/>
         <xsd:element ref="delta_constraint"/>
         <xsd:element ref="index_constraint"/>
         <xsd:element ref="discriminant_constraint"/>
         <xsd:element ref="component_definition"/>
         <xsd:element ref="discrete_subtype_indication_as_subtype_definition"/>
         <xsd:element ref="discrete_range_attribute_reference_as_subtype_definition"/>
         <xsd:element ref="discrete_simple_expression_range_as_subtype_definition"/>
         <xsd:element ref="discrete_subtype_indication"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="unknown_discriminant_part"/>
         <xsd:element ref="known_discriminant_part"/>
         <xsd:element ref="record_definition"/>
         <xsd:element ref="null_record_definition"/>
         <xsd:element ref="null_component"/>
         <xsd:element ref="variant_part"/>
         <xsd:element ref="variant"/>
         <xsd:element ref="others_choice"/>
         <xsd:element ref="anonymous_access_to_variable"/>
         <xsd:element ref="anonymous_access_to_constant"/>
         <xsd:element ref="anonymous_access_to_procedure"/>
         <xsd:element ref="anonymous_access_to_protected_procedure"/>
         <xsd:element ref="anonymous_access_to_function"/>
         <xsd:element ref="anonymous_access_to_protected_function"/>
         <xsd:element ref="private_type_definition"/>
         <xsd:element ref="tagged_private_type_definition"/>
         <xsd:element ref="private_extension_definition"/>
         <xsd:element ref="task_definition"/>
         <xsd:element ref="protected_definition"/>
         <xsd:element ref="formal_private_type_definition"/>
         <xsd:element ref="formal_tagged_private_type_definition"/>
         <xsd:element ref="formal_derived_type_definition"/>
         <xsd:element ref="formal_discrete_type_definition"/>
         <xsd:element ref="formal_signed_integer_type_definition"/>
         <xsd:element ref="formal_modular_type_definition"/>
         <xsd:element ref="formal_floating_point_definition"/>
         <xsd:element ref="formal_ordinary_fixed_point_definition"/>
         <xsd:element ref="formal_decimal_fixed_point_definition"/>
         <xsd:element ref="formal_ordinary_interface"/>
         <xsd:element ref="formal_limited_interface"/>
         <xsd:element ref="formal_task_interface"/>
         <xsd:element ref="formal_protected_interface"/>
         <xsd:element ref="formal_synchronized_interface"/>
         <xsd:element ref="formal_unconstrained_array_definition"/>
         <xsd:element ref="formal_constrained_array_definition"/>
         <xsd:element ref="formal_pool_specific_access_to_variable"/>
         <xsd:element ref="formal_access_to_variable"/>
         <xsd:element ref="formal_access_to_constant"/>
         <xsd:element ref="formal_access_to_procedure"/>
         <xsd:element ref="formal_access_to_protected_procedure"/>
         <xsd:element ref="formal_access_to_function"/>
         <xsd:element ref="formal_access_to_protected_function"/>
         <xsd:element ref="aspect_specification"/>
         <xsd:element ref="box_expression"/>
         <xsd:element ref="integer_literal"/>
         <xsd:element ref="real_literal"/>
         <xsd:element ref="string_literal"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="and_operator"/>
         <xsd:element ref="or_operator"/>
         <xsd:element ref="xor_operator"/>
         <xsd:element ref="equal_operator"/>
         <xsd:element ref="not_equal_operator"/>
         <xsd:element ref="less_than_operator"/>
         <xsd:element ref="less_than_or_equal_operator"/>
         <xsd:element ref="greater_than_operator"/>
         <xsd:element ref="greater_than_or_equal_operator"/>
         <xsd:element ref="plus_operator"/>
         <xsd:element ref="minus_operator"/>
         <xsd:element ref="concatenate_operator"/>
         <xsd:element ref="unary_plus_operator"/>
         <xsd:element ref="unary_minus_operator"/>
         <xsd:element ref="multiply_operator"/>
         <xsd:element ref="divide_operator"/>
         <xsd:element ref="mod_operator"/>
         <xsd:element ref="rem_operator"/>
         <xsd:element ref="exponentiate_operator"/>
         <xsd:element ref="abs_operator"/>
         <xsd:element ref="not_operator"/>
         <xsd:element ref="character_literal"/>
         <xsd:element ref="enumeration_literal"/>
         <xsd:element ref="explicit_dereference"/>
         <xsd:element ref="function_call"/>
         <xsd:element ref="indexed_component"/>
         <xsd:element ref="slice"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="access_attribute"/>
         <xsd:element ref="address_attribute"/>
         <xsd:element ref="adjacent_attribute"/>
         <xsd:element ref="aft_attribute"/>
         <xsd:element ref="alignment_attribute"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="bit_order_attribute"/>
         <xsd:element ref="body_version_attribute"/>
         <xsd:element ref="callable_attribute"/>
         <xsd:element ref="caller_attribute"/>
         <xsd:element ref="ceiling_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="component_size_attribute"/>
         <xsd:element ref="compose_attribute"/>
         <xsd:element ref="constrained_attribute"/>
         <xsd:element ref="copy_sign_attribute"/>
         <xsd:element ref="count_attribute"/>
         <xsd:element ref="definite_attribute"/>
         <xsd:element ref="delta_attribute"/>
         <xsd:element ref="denorm_attribute"/>
         <xsd:element ref="digits_attribute"/>
         <xsd:element ref="exponent_attribute"/>
         <xsd:element ref="external_tag_attribute"/>
         <xsd:element ref="first_attribute"/>
         <xsd:element ref="first_bit_attribute"/>
         <xsd:element ref="floor_attribute"/>
         <xsd:element ref="fore_attribute"/>
         <xsd:element ref="fraction_attribute"/>
         <xsd:element ref="identity_attribute"/>
         <xsd:element ref="image_attribute"/>
         <xsd:element ref="input_attribute"/>
         <xsd:element ref="last_attribute"/>
         <xsd:element ref="last_bit_attribute"/>
         <xsd:element ref="leading_part_attribute"/>
         <xsd:element ref="length_attribute"/>
         <xsd:element ref="machine_attribute"/>
         <xsd:element ref="machine_emax_attribute"/>
         <xsd:element ref="machine_emin_attribute"/>
         <xsd:element ref="machine_mantissa_attribute"/>
         <xsd:element ref="machine_overflows_attribute"/>
         <xsd:element ref="machine_radix_attribute"/>
         <xsd:element ref="machine_rounds_attribute"/>
         <xsd:element ref="max_attribute"/>
         <xsd:element ref="max_size_in_storage_elements_attribute"/>
         <xsd:element ref="min_attribute"/>
         <xsd:element ref="model_attribute"/>
         <xsd:element ref="model_emin_attribute"/>
         <xsd:element ref="model_epsilon_attribute"/>
         <xsd:element ref="model_mantissa_attribute"/>
         <xsd:element ref="model_small_attribute"/>
         <xsd:element ref="modulus_attribute"/>
         <xsd:element ref="output_attribute"/>
         <xsd:element ref="partition_id_attribute"/>
         <xsd:element ref="pos_attribute"/>
         <xsd:element ref="position_attribute"/>
         <xsd:element ref="pred_attribute"/>
         <xsd:element ref="range_attribute"/>
         <xsd:element ref="read_attribute"/>
         <xsd:element ref="remainder_attribute"/>
         <xsd:element ref="round_attribute"/>
         <xsd:element ref="rounding_attribute"/>
         <xsd:element ref="safe_first_attribute"/>
         <xsd:element ref="safe_last_attribute"/>
         <xsd:element ref="scale_attribute"/>
         <xsd:element ref="scaling_attribute"/>
         <xsd:element ref="signed_zeros_attribute"/>
         <xsd:element ref="size_attribute"/>
         <xsd:element ref="small_attribute"/>
         <xsd:element ref="storage_pool_attribute"/>
         <xsd:element ref="storage_size_attribute"/>
         <xsd:element ref="succ_attribute"/>
         <xsd:element ref="tag_attribute"/>
         <xsd:element ref="terminated_attribute"/>
         <xsd:element ref="truncation_attribute"/>
         <xsd:element ref="unbiased_rounding_attribute"/>
         <xsd:element ref="unchecked_access_attribute"/>
         <xsd:element ref="val_attribute"/>
         <xsd:element ref="valid_attribute"/>
         <xsd:element ref="value_attribute"/>
         <xsd:element ref="version_attribute"/>
         <xsd:element ref="wide_image_attribute"/>
         <xsd:element ref="wide_value_attribute"/>
         <xsd:element ref="wide_width_attribute"/>
         <xsd:element ref="width_attribute"/>
         <xsd:element ref="write_attribute"/>
         <xsd:element ref="machine_rounding_attribute"/>
         <xsd:element ref="mod_attribute"/>
         <xsd:element ref="priority_attribute"/>
         <xsd:element ref="stream_size_attribute"/>
         <xsd:element ref="wide_wide_image_attribute"/>
         <xsd:element ref="wide_wide_value_attribute"/>
         <xsd:element ref="wide_wide_width_attribute"/>
         <xsd:element ref="max_alignment_for_allocation_attribute"/>
         <xsd:element ref="overlaps_storage_attribute"/>
         <xsd:element ref="implementation_defined_attribute"/>
         <xsd:element ref="unknown_attribute"/>
         <xsd:element ref="record_aggregate"/>
         <xsd:element ref="extension_aggregate"/>
         <xsd:element ref="positional_array_aggregate"/>
         <xsd:element ref="named_array_aggregate"/>
         <xsd:element ref="and_then_short_circuit"/>
         <xsd:element ref="or_else_short_circuit"/>
         <xsd:element ref="in_membership_test"/>
         <xsd:element ref="not_in_membership_test"/>
         <xsd:element ref="null_literal"/>
         <xsd:element ref="parenthesized_expression"/>
         <xsd:element ref="raise_expression"/>
         <xsd:element ref="type_conversion"/>
         <xsd:element ref="qualified_expression"/>
         <xsd:element ref="allocation_from_subtype"/>
         <xsd:element ref="allocation_from_qualified_expression"/>
         <xsd:element ref="case_expression"/>
         <xsd:element ref="if_expression"/>
         <xsd:element ref="for_all_quantified_expression"/>
         <xsd:element ref="for_some_quantified_expression"/>
         <xsd:element ref="pragma_argument_association"/>
         <xsd:element ref="discriminant_association"/>
         <xsd:element ref="record_component_association"/>
         <xsd:element ref="array_component_association"/>
         <xsd:element ref="parameter_association"/>
         <xsd:element ref="generic_association"/>
         <xsd:element ref="null_statement"/>
         <xsd:element ref="assignment_statement"/>
         <xsd:element ref="if_statement"/>
         <xsd:element ref="case_statement"/>
         <xsd:element ref="loop_statement"/>
         <xsd:element ref="while_loop_statement"/>
         <xsd:element ref="for_loop_statement"/>
         <xsd:element ref="block_statement"/>
         <xsd:element ref="exit_statement"/>
         <xsd:element ref="goto_statement"/>
         <xsd:element ref="procedure_call_statement"/>
         <xsd:element ref="return_statement"/>
         <xsd:element ref="extended_return_statement"/>
         <xsd:element ref="accept_statement"/>
         <xsd:element ref="entry_call_statement"/>
         <xsd:element ref="requeue_statement"/>
         <xsd:element ref="requeue_statement_with_abort"/>
         <xsd:element ref="delay_until_statement"/>
         <xsd:element ref="delay_relative_statement"/>
         <xsd:element ref="terminate_alternative_statement"/>
         <xsd:element ref="selective_accept_statement"/>
         <xsd:element ref="timed_entry_call_statement"/>
         <xsd:element ref="conditional_entry_call_statement"/>
         <xsd:element ref="asynchronous_select_statement"/>
         <xsd:element ref="abort_statement"/>
         <xsd:element ref="raise_statement"/>
         <xsd:element ref="code_statement"/>
         <xsd:element ref="if_path"/>
         <xsd:element ref="elsif_path"/>
         <xsd:element ref="else_path"/>
         <xsd:element ref="case_path"/>
         <xsd:element ref="select_path"/>
         <xsd:element ref="or_path"/>
         <xsd:element ref="then_abort_path"/>
         <xsd:element ref="case_expression_path"/>
         <xsd:element ref="if_expression_path"/>
         <xsd:element ref="elsif_expression_path"/>
         <xsd:element ref="else_expression_path"/>
         <xsd:element ref="use_package_clause"/>
         <xsd:element ref="use_type_clause"/>
         <xsd:element ref="use_all_type_clause"/>
         <xsd:element ref="with_clause"/>
         <xsd:element ref="attribute_definition_clause"/>
         <xsd:element ref="enumeration_representation_clause"/>
         <xsd:element ref="record_representation_clause"/>
         <xsd:element ref="at_clause"/>
         <xsd:element ref="component_clause"/>
         <xsd:element ref="exception_handler"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Association_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="pragma_argument_association"/>
         <xsd:element ref="discriminant_association"/>
         <xsd:element ref="record_component_association"/>
         <xsd:element ref="array_component_association"/>
         <xsd:element ref="parameter_association"/>
         <xsd:element ref="generic_association"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Component_Clause_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="component_clause"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Context_Clause_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="use_package_clause"/>
         <xsd:element ref="use_type_clause"/>
         <xsd:element ref="use_all_type_clause"/>
         <xsd:element ref="with_clause"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Declaration_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="ordinary_type_declaration"/>
         <xsd:element ref="task_type_declaration"/>
         <xsd:element ref="protected_type_declaration"/>
         <xsd:element ref="incomplete_type_declaration"/>
         <xsd:element ref="tagged_incomplete_type_declaration"/>
         <xsd:element ref="private_type_declaration"/>
         <xsd:element ref="private_extension_declaration"/>
         <xsd:element ref="subtype_declaration"/>
         <xsd:element ref="variable_declaration"/>
         <xsd:element ref="constant_declaration"/>
         <xsd:element ref="deferred_constant_declaration"/>
         <xsd:element ref="single_task_declaration"/>
         <xsd:element ref="single_protected_declaration"/>
         <xsd:element ref="integer_number_declaration"/>
         <xsd:element ref="real_number_declaration"/>
         <xsd:element ref="enumeration_literal_specification"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="loop_parameter_specification"/>
         <xsd:element ref="generalized_iterator_specification"/>
         <xsd:element ref="element_iterator_specification"/>
         <xsd:element ref="procedure_declaration"/>
         <xsd:element ref="function_declaration"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:element ref="procedure_body_declaration"/>
         <xsd:element ref="function_body_declaration"/>
         <xsd:element ref="return_variable_specification"/>
         <xsd:element ref="return_constant_specification"/>
         <xsd:element ref="null_procedure_declaration"/>
         <xsd:element ref="expression_function_declaration"/>
         <xsd:element ref="package_declaration"/>
         <xsd:element ref="package_body_declaration"/>
         <xsd:element ref="object_renaming_declaration"/>
         <xsd:element ref="exception_renaming_declaration"/>
         <xsd:element ref="package_renaming_declaration"/>
         <xsd:element ref="procedure_renaming_declaration"/>
         <xsd:element ref="function_renaming_declaration"/>
         <xsd:element ref="generic_package_renaming_declaration"/>
         <xsd:element ref="generic_procedure_renaming_declaration"/>
         <xsd:element ref="generic_function_renaming_declaration"/>
         <xsd:element ref="task_body_declaration"/>
         <xsd:element ref="protected_body_declaration"/>
         <xsd:element ref="entry_declaration"/>
         <xsd:element ref="entry_body_declaration"/>
         <xsd:element ref="entry_index_specification"/>
         <xsd:element ref="procedure_body_stub"/>
         <xsd:element ref="function_body_stub"/>
         <xsd:element ref="package_body_stub"/>
         <xsd:element ref="task_body_stub"/>
         <xsd:element ref="protected_body_stub"/>
         <xsd:element ref="exception_declaration"/>
         <xsd:element ref="choice_parameter_specification"/>
         <xsd:element ref="generic_procedure_declaration"/>
         <xsd:element ref="generic_function_declaration"/>
         <xsd:element ref="generic_package_declaration"/>
         <xsd:element ref="package_instantiation"/>
         <xsd:element ref="procedure_instantiation"/>
         <xsd:element ref="function_instantiation"/>
         <xsd:element ref="formal_object_declaration"/>
         <xsd:element ref="formal_type_declaration"/>
         <xsd:element ref="formal_incomplete_type_declaration"/>
         <xsd:element ref="formal_procedure_declaration"/>
         <xsd:element ref="formal_function_declaration"/>
         <xsd:element ref="formal_package_declaration"/>
         <xsd:element ref="formal_package_declaration_with_box"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Declarative_Item_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="ordinary_type_declaration"/>
         <xsd:element ref="task_type_declaration"/>
         <xsd:element ref="protected_type_declaration"/>
         <xsd:element ref="incomplete_type_declaration"/>
         <xsd:element ref="tagged_incomplete_type_declaration"/>
         <xsd:element ref="private_type_declaration"/>
         <xsd:element ref="private_extension_declaration"/>
         <xsd:element ref="subtype_declaration"/>
         <xsd:element ref="variable_declaration"/>
         <xsd:element ref="constant_declaration"/>
         <xsd:element ref="deferred_constant_declaration"/>
         <xsd:element ref="single_task_declaration"/>
         <xsd:element ref="single_protected_declaration"/>
         <xsd:element ref="integer_number_declaration"/>
         <xsd:element ref="real_number_declaration"/>
         <xsd:element ref="enumeration_literal_specification"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="loop_parameter_specification"/>
         <xsd:element ref="generalized_iterator_specification"/>
         <xsd:element ref="element_iterator_specification"/>
         <xsd:element ref="procedure_declaration"/>
         <xsd:element ref="function_declaration"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:element ref="procedure_body_declaration"/>
         <xsd:element ref="function_body_declaration"/>
         <xsd:element ref="return_variable_specification"/>
         <xsd:element ref="return_constant_specification"/>
         <xsd:element ref="null_procedure_declaration"/>
         <xsd:element ref="expression_function_declaration"/>
         <xsd:element ref="package_declaration"/>
         <xsd:element ref="package_body_declaration"/>
         <xsd:element ref="object_renaming_declaration"/>
         <xsd:element ref="exception_renaming_declaration"/>
         <xsd:element ref="package_renaming_declaration"/>
         <xsd:element ref="procedure_renaming_declaration"/>
         <xsd:element ref="function_renaming_declaration"/>
         <xsd:element ref="generic_package_renaming_declaration"/>
         <xsd:element ref="generic_procedure_renaming_declaration"/>
         <xsd:element ref="generic_function_renaming_declaration"/>
         <xsd:element ref="task_body_declaration"/>
         <xsd:element ref="protected_body_declaration"/>
         <xsd:element ref="entry_declaration"/>
         <xsd:element ref="entry_body_declaration"/>
         <xsd:element ref="entry_index_specification"/>
         <xsd:element ref="procedure_body_stub"/>
         <xsd:element ref="function_body_stub"/>
         <xsd:element ref="package_body_stub"/>
         <xsd:element ref="task_body_stub"/>
         <xsd:element ref="protected_body_stub"/>
         <xsd:element ref="exception_declaration"/>
         <xsd:element ref="choice_parameter_specification"/>
         <xsd:element ref="generic_procedure_declaration"/>
         <xsd:element ref="generic_function_declaration"/>
         <xsd:element ref="generic_package_declaration"/>
         <xsd:element ref="package_instantiation"/>
         <xsd:element ref="procedure_instantiation"/>
         <xsd:element ref="function_instantiation"/>
         <xsd:element ref="formal_object_declaration"/>
         <xsd:element ref="formal_type_declaration"/>
         <xsd:element ref="formal_incomplete_type_declaration"/>
         <xsd:element ref="formal_procedure_declaration"/>
         <xsd:element ref="formal_function_declaration"/>
         <xsd:element ref="formal_package_declaration"/>
         <xsd:element ref="formal_package_declaration_with_box"/>
         <xsd:element ref="use_package_clause"/>
         <xsd:element ref="use_type_clause"/>
         <xsd:element ref="use_all_type_clause"/>
         <xsd:element ref="with_clause"/>
         <xsd:element ref="attribute_definition_clause"/>
         <xsd:element ref="enumeration_representation_clause"/>
         <xsd:element ref="record_representation_clause"/>
         <xsd:element ref="at_clause"/>
         <xsd:element ref="component_clause"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Definition_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="derived_type_definition"/>
         <xsd:element ref="derived_record_extension_definition"/>
         <xsd:element ref="enumeration_type_definition"/>
         <xsd:element ref="signed_integer_type_definition"/>
         <xsd:element ref="modular_type_definition"/>
         <xsd:element ref="root_integer_definition"/>
         <xsd:element ref="root_real_definition"/>
         <xsd:element ref="universal_integer_definition"/>
         <xsd:element ref="universal_real_definition"/>
         <xsd:element ref="universal_fixed_definition"/>
         <xsd:element ref="floating_point_definition"/>
         <xsd:element ref="ordinary_fixed_point_definition"/>
         <xsd:element ref="decimal_fixed_point_definition"/>
         <xsd:element ref="unconstrained_array_definition"/>
         <xsd:element ref="constrained_array_definition"/>
         <xsd:element ref="record_type_definition"/>
         <xsd:element ref="tagged_record_type_definition"/>
         <xsd:element ref="ordinary_interface"/>
         <xsd:element ref="limited_interface"/>
         <xsd:element ref="task_interface"/>
         <xsd:element ref="protected_interface"/>
         <xsd:element ref="synchronized_interface"/>
         <xsd:element ref="pool_specific_access_to_variable"/>
         <xsd:element ref="access_to_variable"/>
         <xsd:element ref="access_to_constant"/>
         <xsd:element ref="access_to_procedure"/>
         <xsd:element ref="access_to_protected_procedure"/>
         <xsd:element ref="access_to_function"/>
         <xsd:element ref="access_to_protected_function"/>
         <xsd:element ref="subtype_indication"/>
         <xsd:element ref="range_attribute_reference"/>
         <xsd:element ref="simple_expression_range"/>
         <xsd:element ref="digits_constraint"/>
         <xsd:element ref="delta_constraint"/>
         <xsd:element ref="index_constraint"/>
         <xsd:element ref="discriminant_constraint"/>
         <xsd:element ref="component_definition"/>
         <xsd:element ref="discrete_subtype_indication_as_subtype_definition"/>
         <xsd:element ref="discrete_range_attribute_reference_as_subtype_definition"/>
         <xsd:element ref="discrete_simple_expression_range_as_subtype_definition"/>
         <xsd:element ref="discrete_subtype_indication"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="unknown_discriminant_part"/>
         <xsd:element ref="known_discriminant_part"/>
         <xsd:element ref="record_definition"/>
         <xsd:element ref="null_record_definition"/>
         <xsd:element ref="null_component"/>
         <xsd:element ref="variant_part"/>
         <xsd:element ref="variant"/>
         <xsd:element ref="others_choice"/>
         <xsd:element ref="anonymous_access_to_variable"/>
         <xsd:element ref="anonymous_access_to_constant"/>
         <xsd:element ref="anonymous_access_to_procedure"/>
         <xsd:element ref="anonymous_access_to_protected_procedure"/>
         <xsd:element ref="anonymous_access_to_function"/>
         <xsd:element ref="anonymous_access_to_protected_function"/>
         <xsd:element ref="private_type_definition"/>
         <xsd:element ref="tagged_private_type_definition"/>
         <xsd:element ref="private_extension_definition"/>
         <xsd:element ref="task_definition"/>
         <xsd:element ref="protected_definition"/>
         <xsd:element ref="formal_private_type_definition"/>
         <xsd:element ref="formal_tagged_private_type_definition"/>
         <xsd:element ref="formal_derived_type_definition"/>
         <xsd:element ref="formal_discrete_type_definition"/>
         <xsd:element ref="formal_signed_integer_type_definition"/>
         <xsd:element ref="formal_modular_type_definition"/>
         <xsd:element ref="formal_floating_point_definition"/>
         <xsd:element ref="formal_ordinary_fixed_point_definition"/>
         <xsd:element ref="formal_decimal_fixed_point_definition"/>
         <xsd:element ref="formal_ordinary_interface"/>
         <xsd:element ref="formal_limited_interface"/>
         <xsd:element ref="formal_task_interface"/>
         <xsd:element ref="formal_protected_interface"/>
         <xsd:element ref="formal_synchronized_interface"/>
         <xsd:element ref="formal_unconstrained_array_definition"/>
         <xsd:element ref="formal_constrained_array_definition"/>
         <xsd:element ref="formal_pool_specific_access_to_variable"/>
         <xsd:element ref="formal_access_to_variable"/>
         <xsd:element ref="formal_access_to_constant"/>
         <xsd:element ref="formal_access_to_procedure"/>
         <xsd:element ref="formal_access_to_protected_procedure"/>
         <xsd:element ref="formal_access_to_function"/>
         <xsd:element ref="formal_access_to_protected_function"/>
         <xsd:element ref="aspect_specification"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Discrete_Range_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discrete_subtype_indication"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Discriminant_Association_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discriminant_association"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Discriminant_Specification_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discriminant_specification"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Defining_Name_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="defining_identifier"/>
         <xsd:element ref="defining_character_literal"/>
         <xsd:element ref="defining_enumeration_literal"/>
         <xsd:element ref="defining_and_operator"/>
         <xsd:element ref="defining_or_operator"/>
         <xsd:element ref="defining_xor_operator"/>
         <xsd:element ref="defining_equal_operator"/>
         <xsd:element ref="defining_not_equal_operator"/>
         <xsd:element ref="defining_less_than_operator"/>
         <xsd:element ref="defining_less_than_or_equal_operator"/>
         <xsd:element ref="defining_greater_than_operator"/>
         <xsd:element ref="defining_greater_than_or_equal_operator"/>
         <xsd:element ref="defining_plus_operator"/>
         <xsd:element ref="defining_minus_operator"/>
         <xsd:element ref="defining_concatenate_operator"/>
         <xsd:element ref="defining_unary_plus_operator"/>
         <xsd:element ref="defining_unary_minus_operator"/>
         <xsd:element ref="defining_multiply_operator"/>
         <xsd:element ref="defining_divide_operator"/>
         <xsd:element ref="defining_mod_operator"/>
         <xsd:element ref="defining_rem_operator"/>
         <xsd:element ref="defining_exponentiate_operator"/>
         <xsd:element ref="defining_abs_operator"/>
         <xsd:element ref="defining_not_operator"/>
         <xsd:element ref="defining_expanded_name"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Exception_Handler_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="exception_handler"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Expression_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="discrete_range_attribute_reference"/>
         <xsd:element ref="discrete_simple_expression_range"/>
         <xsd:element ref="others_choice"/>
         <xsd:element ref="box_expression"/>
         <xsd:element ref="integer_literal"/>
         <xsd:element ref="real_literal"/>
         <xsd:element ref="string_literal"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="and_operator"/>
         <xsd:element ref="or_operator"/>
         <xsd:element ref="xor_operator"/>
         <xsd:element ref="equal_operator"/>
         <xsd:element ref="not_equal_operator"/>
         <xsd:element ref="less_than_operator"/>
         <xsd:element ref="less_than_or_equal_operator"/>
         <xsd:element ref="greater_than_operator"/>
         <xsd:element ref="greater_than_or_equal_operator"/>
         <xsd:element ref="plus_operator"/>
         <xsd:element ref="minus_operator"/>
         <xsd:element ref="concatenate_operator"/>
         <xsd:element ref="unary_plus_operator"/>
         <xsd:element ref="unary_minus_operator"/>
         <xsd:element ref="multiply_operator"/>
         <xsd:element ref="divide_operator"/>
         <xsd:element ref="mod_operator"/>
         <xsd:element ref="rem_operator"/>
         <xsd:element ref="exponentiate_operator"/>
         <xsd:element ref="abs_operator"/>
         <xsd:element ref="not_operator"/>
         <xsd:element ref="character_literal"/>
         <xsd:element ref="enumeration_literal"/>
         <xsd:element ref="explicit_dereference"/>
         <xsd:element ref="function_call"/>
         <xsd:element ref="indexed_component"/>
         <xsd:element ref="slice"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="access_attribute"/>
         <xsd:element ref="address_attribute"/>
         <xsd:element ref="adjacent_attribute"/>
         <xsd:element ref="aft_attribute"/>
         <xsd:element ref="alignment_attribute"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="bit_order_attribute"/>
         <xsd:element ref="body_version_attribute"/>
         <xsd:element ref="callable_attribute"/>
         <xsd:element ref="caller_attribute"/>
         <xsd:element ref="ceiling_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="component_size_attribute"/>
         <xsd:element ref="compose_attribute"/>
         <xsd:element ref="constrained_attribute"/>
         <xsd:element ref="copy_sign_attribute"/>
         <xsd:element ref="count_attribute"/>
         <xsd:element ref="definite_attribute"/>
         <xsd:element ref="delta_attribute"/>
         <xsd:element ref="denorm_attribute"/>
         <xsd:element ref="digits_attribute"/>
         <xsd:element ref="exponent_attribute"/>
         <xsd:element ref="external_tag_attribute"/>
         <xsd:element ref="first_attribute"/>
         <xsd:element ref="first_bit_attribute"/>
         <xsd:element ref="floor_attribute"/>
         <xsd:element ref="fore_attribute"/>
         <xsd:element ref="fraction_attribute"/>
         <xsd:element ref="identity_attribute"/>
         <xsd:element ref="image_attribute"/>
         <xsd:element ref="input_attribute"/>
         <xsd:element ref="last_attribute"/>
         <xsd:element ref="last_bit_attribute"/>
         <xsd:element ref="leading_part_attribute"/>
         <xsd:element ref="length_attribute"/>
         <xsd:element ref="machine_attribute"/>
         <xsd:element ref="machine_emax_attribute"/>
         <xsd:element ref="machine_emin_attribute"/>
         <xsd:element ref="machine_mantissa_attribute"/>
         <xsd:element ref="machine_overflows_attribute"/>
         <xsd:element ref="machine_radix_attribute"/>
         <xsd:element ref="machine_rounds_attribute"/>
         <xsd:element ref="max_attribute"/>
         <xsd:element ref="max_size_in_storage_elements_attribute"/>
         <xsd:element ref="min_attribute"/>
         <xsd:element ref="model_attribute"/>
         <xsd:element ref="model_emin_attribute"/>
         <xsd:element ref="model_epsilon_attribute"/>
         <xsd:element ref="model_mantissa_attribute"/>
         <xsd:element ref="model_small_attribute"/>
         <xsd:element ref="modulus_attribute"/>
         <xsd:element ref="output_attribute"/>
         <xsd:element ref="partition_id_attribute"/>
         <xsd:element ref="pos_attribute"/>
         <xsd:element ref="position_attribute"/>
         <xsd:element ref="pred_attribute"/>
         <xsd:element ref="range_attribute"/>
         <xsd:element ref="read_attribute"/>
         <xsd:element ref="remainder_attribute"/>
         <xsd:element ref="round_attribute"/>
         <xsd:element ref="rounding_attribute"/>
         <xsd:element ref="safe_first_attribute"/>
         <xsd:element ref="safe_last_attribute"/>
         <xsd:element ref="scale_attribute"/>
         <xsd:element ref="scaling_attribute"/>
         <xsd:element ref="signed_zeros_attribute"/>
         <xsd:element ref="size_attribute"/>
         <xsd:element ref="small_attribute"/>
         <xsd:element ref="storage_pool_attribute"/>
         <xsd:element ref="storage_size_attribute"/>
         <xsd:element ref="succ_attribute"/>
         <xsd:element ref="tag_attribute"/>
         <xsd:element ref="terminated_attribute"/>
         <xsd:element ref="truncation_attribute"/>
         <xsd:element ref="unbiased_rounding_attribute"/>
         <xsd:element ref="unchecked_access_attribute"/>
         <xsd:element ref="val_attribute"/>
         <xsd:element ref="valid_attribute"/>
         <xsd:element ref="value_attribute"/>
         <xsd:element ref="version_attribute"/>
         <xsd:element ref="wide_image_attribute"/>
         <xsd:element ref="wide_value_attribute"/>
         <xsd:element ref="wide_width_attribute"/>
         <xsd:element ref="width_attribute"/>
         <xsd:element ref="write_attribute"/>
         <xsd:element ref="machine_rounding_attribute"/>
         <xsd:element ref="mod_attribute"/>
         <xsd:element ref="priority_attribute"/>
         <xsd:element ref="stream_size_attribute"/>
         <xsd:element ref="wide_wide_image_attribute"/>
         <xsd:element ref="wide_wide_value_attribute"/>
         <xsd:element ref="wide_wide_width_attribute"/>
         <xsd:element ref="max_alignment_for_allocation_attribute"/>
         <xsd:element ref="overlaps_storage_attribute"/>
         <xsd:element ref="implementation_defined_attribute"/>
         <xsd:element ref="unknown_attribute"/>
         <xsd:element ref="record_aggregate"/>
         <xsd:element ref="extension_aggregate"/>
         <xsd:element ref="positional_array_aggregate"/>
         <xsd:element ref="named_array_aggregate"/>
         <xsd:element ref="and_then_short_circuit"/>
         <xsd:element ref="or_else_short_circuit"/>
         <xsd:element ref="in_membership_test"/>
         <xsd:element ref="not_in_membership_test"/>
         <xsd:element ref="null_literal"/>
         <xsd:element ref="parenthesized_expression"/>
         <xsd:element ref="raise_expression"/>
         <xsd:element ref="type_conversion"/>
         <xsd:element ref="qualified_expression"/>
         <xsd:element ref="allocation_from_subtype"/>
         <xsd:element ref="allocation_from_qualified_expression"/>
         <xsd:element ref="case_expression"/>
         <xsd:element ref="if_expression"/>
         <xsd:element ref="for_all_quantified_expression"/>
         <xsd:element ref="for_some_quantified_expression"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Name_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="identifier"/>
         <xsd:element ref="selected_component"/>
         <xsd:element ref="access_attribute"/>
         <xsd:element ref="address_attribute"/>
         <xsd:element ref="adjacent_attribute"/>
         <xsd:element ref="aft_attribute"/>
         <xsd:element ref="alignment_attribute"/>
         <xsd:element ref="base_attribute"/>
         <xsd:element ref="bit_order_attribute"/>
         <xsd:element ref="body_version_attribute"/>
         <xsd:element ref="callable_attribute"/>
         <xsd:element ref="caller_attribute"/>
         <xsd:element ref="ceiling_attribute"/>
         <xsd:element ref="class_attribute"/>
         <xsd:element ref="component_size_attribute"/>
         <xsd:element ref="compose_attribute"/>
         <xsd:element ref="constrained_attribute"/>
         <xsd:element ref="copy_sign_attribute"/>
         <xsd:element ref="count_attribute"/>
         <xsd:element ref="definite_attribute"/>
         <xsd:element ref="delta_attribute"/>
         <xsd:element ref="denorm_attribute"/>
         <xsd:element ref="digits_attribute"/>
         <xsd:element ref="exponent_attribute"/>
         <xsd:element ref="external_tag_attribute"/>
         <xsd:element ref="first_attribute"/>
         <xsd:element ref="first_bit_attribute"/>
         <xsd:element ref="floor_attribute"/>
         <xsd:element ref="fore_attribute"/>
         <xsd:element ref="fraction_attribute"/>
         <xsd:element ref="identity_attribute"/>
         <xsd:element ref="image_attribute"/>
         <xsd:element ref="input_attribute"/>
         <xsd:element ref="last_attribute"/>
         <xsd:element ref="last_bit_attribute"/>
         <xsd:element ref="leading_part_attribute"/>
         <xsd:element ref="length_attribute"/>
         <xsd:element ref="machine_attribute"/>
         <xsd:element ref="machine_emax_attribute"/>
         <xsd:element ref="machine_emin_attribute"/>
         <xsd:element ref="machine_mantissa_attribute"/>
         <xsd:element ref="machine_overflows_attribute"/>
         <xsd:element ref="machine_radix_attribute"/>
         <xsd:element ref="machine_rounds_attribute"/>
         <xsd:element ref="max_attribute"/>
         <xsd:element ref="max_size_in_storage_elements_attribute"/>
         <xsd:element ref="min_attribute"/>
         <xsd:element ref="model_attribute"/>
         <xsd:element ref="model_emin_attribute"/>
         <xsd:element ref="model_epsilon_attribute"/>
         <xsd:element ref="model_mantissa_attribute"/>
         <xsd:element ref="model_small_attribute"/>
         <xsd:element ref="modulus_attribute"/>
         <xsd:element ref="output_attribute"/>
         <xsd:element ref="partition_id_attribute"/>
         <xsd:element ref="pos_attribute"/>
         <xsd:element ref="position_attribute"/>
         <xsd:element ref="pred_attribute"/>
         <xsd:element ref="range_attribute"/>
         <xsd:element ref="read_attribute"/>
         <xsd:element ref="remainder_attribute"/>
         <xsd:element ref="round_attribute"/>
         <xsd:element ref="rounding_attribute"/>
         <xsd:element ref="safe_first_attribute"/>
         <xsd:element ref="safe_last_attribute"/>
         <xsd:element ref="scale_attribute"/>
         <xsd:element ref="scaling_attribute"/>
         <xsd:element ref="signed_zeros_attribute"/>
         <xsd:element ref="size_attribute"/>
         <xsd:element ref="small_attribute"/>
         <xsd:element ref="storage_pool_attribute"/>
         <xsd:element ref="storage_size_attribute"/>
         <xsd:element ref="succ_attribute"/>
         <xsd:element ref="tag_attribute"/>
         <xsd:element ref="terminated_attribute"/>
         <xsd:element ref="truncation_attribute"/>
         <xsd:element ref="unbiased_rounding_attribute"/>
         <xsd:element ref="unchecked_access_attribute"/>
         <xsd:element ref="val_attribute"/>
         <xsd:element ref="valid_attribute"/>
         <xsd:element ref="value_attribute"/>
         <xsd:element ref="version_attribute"/>
         <xsd:element ref="wide_image_attribute"/>
         <xsd:element ref="wide_value_attribute"/>
         <xsd:element ref="wide_width_attribute"/>
         <xsd:element ref="width_attribute"/>
         <xsd:element ref="write_attribute"/>
         <xsd:element ref="machine_rounding_attribute"/>
         <xsd:element ref="mod_attribute"/>
         <xsd:element ref="priority_attribute"/>
         <xsd:element ref="stream_size_attribute"/>
         <xsd:element ref="wide_wide_image_attribute"/>
         <xsd:element ref="wide_wide_value_attribute"/>
         <xsd:element ref="wide_wide_width_attribute"/>
         <xsd:element ref="max_alignment_for_allocation_attribute"/>
         <xsd:element ref="overlaps_storage_attribute"/>
         <xsd:element ref="implementation_defined_attribute"/>
         <xsd:element ref="unknown_attribute"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Parameter_Specification_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="parameter_specification"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Path_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="if_path"/>
         <xsd:element ref="elsif_path"/>
         <xsd:element ref="else_path"/>
         <xsd:element ref="case_path"/>
         <xsd:element ref="select_path"/>
         <xsd:element ref="or_path"/>
         <xsd:element ref="then_abort_path"/>
         <xsd:element ref="case_expression_path"/>
         <xsd:element ref="if_expression_path"/>
         <xsd:element ref="elsif_expression_path"/>
         <xsd:element ref="else_expression_path"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Record_Component_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="component_declaration"/>
         <xsd:element ref="null_component"/>
         <xsd:element ref="variant_part"/>
         <xsd:element ref="attribute_definition_clause"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Statement_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="null_statement"/>
         <xsd:element ref="assignment_statement"/>
         <xsd:element ref="if_statement"/>
         <xsd:element ref="case_statement"/>
         <xsd:element ref="loop_statement"/>
         <xsd:element ref="while_loop_statement"/>
         <xsd:element ref="for_loop_statement"/>
         <xsd:element ref="block_statement"/>
         <xsd:element ref="exit_statement"/>
         <xsd:element ref="goto_statement"/>
         <xsd:element ref="procedure_call_statement"/>
         <xsd:element ref="return_statement"/>
         <xsd:element ref="extended_return_statement"/>
         <xsd:element ref="accept_statement"/>
         <xsd:element ref="entry_call_statement"/>
         <xsd:element ref="requeue_statement"/>
         <xsd:element ref="requeue_statement_with_abort"/>
         <xsd:element ref="delay_until_statement"/>
         <xsd:element ref="delay_relative_statement"/>
         <xsd:element ref="terminate_alternative_statement"/>
         <xsd:element ref="selective_accept_statement"/>
         <xsd:element ref="timed_entry_call_statement"/>
         <xsd:element ref="conditional_entry_call_statement"/>
         <xsd:element ref="asynchronous_select_statement"/>
         <xsd:element ref="abort_statement"/>
         <xsd:element ref="raise_statement"/>
         <xsd:element ref="code_statement"/>
         <xsd:element ref="comment"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>

   <xsd:complexType name="Variant_List">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="not_an_element"/>
         <xsd:element ref="variant"/>
         <xsd:group ref="pragmas_group"/>
      </xsd:choice>
   </xsd:complexType>


   <!-- ================================================================ -->
   <!-- Boolean Elements -->

   <xsd:element name="aliased" type="Aliased"/>

   <xsd:complexType name="Aliased">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="null_exclusion" type="Null_Exclusion"/>

   <xsd:complexType name="Null_Exclusion">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="not_null_return" type="Not_Null_Return"/>

   <xsd:complexType name="Not_Null_Return">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="reverse" type="Reverse"/>

   <xsd:complexType name="Reverse">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="limited" type="Limited"/>

   <xsd:complexType name="Limited">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="synchronized" type="Synchronized"/>

   <xsd:complexType name="Synchronized">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="private" type="Private"/>

   <xsd:complexType name="Private">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="abstract" type="Abstract"/>

   <xsd:complexType name="Abstract">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="tagged" type="Tagged"/>

   <xsd:complexType name="Tagged">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="overriding" type="Overriding"/>

   <xsd:complexType name="Overriding">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="not_overriding" type="Not_Overriding"/>

   <xsd:complexType name="Not_Overriding">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="is_prefix_call" type="Is_Prefix_Call"/>

   <xsd:complexType name="Is_Prefix_Call">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="is_prefix_notation" type="Is_Prefix_Notation"/>

   <xsd:complexType name="Is_Prefix_Notation">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <!-- ================================================================ -->
   <!-- Defining Occurrences -->

   <xsd:element name="defining_identifier" type="Defining_Identifier"/>

   <xsd:complexType name="Defining_Identifier">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_character_literal" type="Defining_Character_Literal"/>

   <xsd:complexType name="Defining_Character_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_enumeration_literal" type="Defining_Enumeration_Literal"/>

   <xsd:complexType name="Defining_Enumeration_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_and_operator" type="Defining_And_Operator"/>

   <xsd:complexType name="Defining_And_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_or_operator" type="Defining_Or_Operator"/>

   <xsd:complexType name="Defining_Or_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_xor_operator" type="Defining_Xor_Operator"/>

   <xsd:complexType name="Defining_Xor_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_equal_operator" type="Defining_Equal_Operator"/>

   <xsd:complexType name="Defining_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_not_equal_operator" type="Defining_Not_Equal_Operator"/>

   <xsd:complexType name="Defining_Not_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_less_than_operator" type="Defining_Less_Than_Operator"/>

   <xsd:complexType name="Defining_Less_Than_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_less_than_or_equal_operator" type="Defining_Less_Than_Or_Equal_Operator"/>

   <xsd:complexType name="Defining_Less_Than_Or_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_greater_than_operator" type="Defining_Greater_Than_Operator"/>

   <xsd:complexType name="Defining_Greater_Than_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_greater_than_or_equal_operator" type="Defining_Greater_Than_Or_Equal_Operator"/>

   <xsd:complexType name="Defining_Greater_Than_Or_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_plus_operator" type="Defining_Plus_Operator"/>

   <xsd:complexType name="Defining_Plus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_minus_operator" type="Defining_Minus_Operator"/>

   <xsd:complexType name="Defining_Minus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_concatenate_operator" type="Defining_Concatenate_Operator"/>

   <xsd:complexType name="Defining_Concatenate_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_unary_plus_operator" type="Defining_Unary_Plus_Operator"/>

   <xsd:complexType name="Defining_Unary_Plus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_unary_minus_operator" type="Defining_Unary_Minus_Operator"/>

   <xsd:complexType name="Defining_Unary_Minus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_multiply_operator" type="Defining_Multiply_Operator"/>

   <xsd:complexType name="Defining_Multiply_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_divide_operator" type="Defining_Divide_Operator"/>

   <xsd:complexType name="Defining_Divide_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_mod_operator" type="Defining_Mod_Operator"/>

   <xsd:complexType name="Defining_Mod_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_rem_operator" type="Defining_Rem_Operator"/>

   <xsd:complexType name="Defining_Rem_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_exponentiate_operator" type="Defining_Exponentiate_Operator"/>

   <xsd:complexType name="Defining_Exponentiate_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_abs_operator" type="Defining_Abs_Operator"/>

   <xsd:complexType name="Defining_Abs_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_not_operator" type="Defining_Not_Operator"/>

   <xsd:complexType name="Defining_Not_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="defining_expanded_name" type="Defining_Expanded_Name"/>

   <xsd:complexType name="Defining_Expanded_Name">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="defining_prefix_q" type="Name_Class"/>
         <xsd:element name="defining_selector_q" type="Defining_Name_Class"/>
      </xsd:sequence>
      <xsd:attribute name="def_name" type="xsd:string" use="required"/>
      <xsd:attribute name="def" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <!-- ================================================================ -->
   <!-- Usage Occurrences -->

   <xsd:element name="identifier" type="Identifier"/>

   <xsd:complexType name="Identifier">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="and_operator" type="And_Operator"/>

   <xsd:complexType name="And_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="or_operator" type="Or_Operator"/>

   <xsd:complexType name="Or_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="xor_operator" type="Xor_Operator"/>

   <xsd:complexType name="Xor_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="equal_operator" type="Equal_Operator"/>

   <xsd:complexType name="Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="not_equal_operator" type="Not_Equal_Operator"/>

   <xsd:complexType name="Not_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="less_than_operator" type="Less_Than_Operator"/>

   <xsd:complexType name="Less_Than_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="less_than_or_equal_operator" type="Less_Than_Or_Equal_Operator"/>

   <xsd:complexType name="Less_Than_Or_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="greater_than_operator" type="Greater_Than_Operator"/>

   <xsd:complexType name="Greater_Than_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="greater_than_or_equal_operator" type="Greater_Than_Or_Equal_Operator"/>

   <xsd:complexType name="Greater_Than_Or_Equal_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="plus_operator" type="Plus_Operator"/>

   <xsd:complexType name="Plus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="minus_operator" type="Minus_Operator"/>

   <xsd:complexType name="Minus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="concatenate_operator" type="Concatenate_Operator"/>

   <xsd:complexType name="Concatenate_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unary_plus_operator" type="Unary_Plus_Operator"/>

   <xsd:complexType name="Unary_Plus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unary_minus_operator" type="Unary_Minus_Operator"/>

   <xsd:complexType name="Unary_Minus_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="multiply_operator" type="Multiply_Operator"/>

   <xsd:complexType name="Multiply_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="divide_operator" type="Divide_Operator"/>

   <xsd:complexType name="Divide_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="mod_operator" type="Mod_Operator"/>

   <xsd:complexType name="Mod_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="rem_operator" type="Rem_Operator"/>

   <xsd:complexType name="Rem_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="exponentiate_operator" type="Exponentiate_Operator"/>

   <xsd:complexType name="Exponentiate_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="abs_operator" type="Abs_Operator"/>

   <xsd:complexType name="Abs_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="not_operator" type="Not_Operator"/>

   <xsd:complexType name="Not_Operator">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="character_literal" type="Character_Literal"/>

   <xsd:complexType name="Character_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="enumeration_literal" type="Enumeration_Literal"/>

   <xsd:complexType name="Enumeration_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="ref_name" type="xsd:string" use="required"/>
      <xsd:attribute name="ref" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <!-- ================================================================ -->
   <!-- Other Elements -->

   <xsd:element name="all_calls_remote_pragma" type="All_Calls_Remote_Pragma"/>

   <xsd:complexType name="All_Calls_Remote_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="asynchronous_pragma" type="Asynchronous_Pragma"/>

   <xsd:complexType name="Asynchronous_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="atomic_pragma" type="Atomic_Pragma"/>

   <xsd:complexType name="Atomic_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="atomic_components_pragma" type="Atomic_Components_Pragma"/>

   <xsd:complexType name="Atomic_Components_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="attach_handler_pragma" type="Attach_Handler_Pragma"/>

   <xsd:complexType name="Attach_Handler_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="controlled_pragma" type="Controlled_Pragma"/>

   <xsd:complexType name="Controlled_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="convention_pragma" type="Convention_Pragma"/>

   <xsd:complexType name="Convention_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discard_names_pragma" type="Discard_Names_Pragma"/>

   <xsd:complexType name="Discard_Names_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="elaborate_pragma" type="Elaborate_Pragma"/>

   <xsd:complexType name="Elaborate_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="elaborate_all_pragma" type="Elaborate_All_Pragma"/>

   <xsd:complexType name="Elaborate_All_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="elaborate_body_pragma" type="Elaborate_Body_Pragma"/>

   <xsd:complexType name="Elaborate_Body_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="export_pragma" type="Export_Pragma"/>

   <xsd:complexType name="Export_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="import_pragma" type="Import_Pragma"/>

   <xsd:complexType name="Import_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="inline_pragma" type="Inline_Pragma"/>

   <xsd:complexType name="Inline_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="inspection_point_pragma" type="Inspection_Point_Pragma"/>

   <xsd:complexType name="Inspection_Point_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="interrupt_handler_pragma" type="Interrupt_Handler_Pragma"/>

   <xsd:complexType name="Interrupt_Handler_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="interrupt_priority_pragma" type="Interrupt_Priority_Pragma"/>

   <xsd:complexType name="Interrupt_Priority_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="linker_options_pragma" type="Linker_Options_Pragma"/>

   <xsd:complexType name="Linker_Options_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="list_pragma" type="List_Pragma"/>

   <xsd:complexType name="List_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="locking_policy_pragma" type="Locking_Policy_Pragma"/>

   <xsd:complexType name="Locking_Policy_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="normalize_scalars_pragma" type="Normalize_Scalars_Pragma"/>

   <xsd:complexType name="Normalize_Scalars_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="optimize_pragma" type="Optimize_Pragma"/>

   <xsd:complexType name="Optimize_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="pack_pragma" type="Pack_Pragma"/>

   <xsd:complexType name="Pack_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="page_pragma" type="Page_Pragma"/>

   <xsd:complexType name="Page_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="preelaborate_pragma" type="Preelaborate_Pragma"/>

   <xsd:complexType name="Preelaborate_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="priority_pragma" type="Priority_Pragma"/>

   <xsd:complexType name="Priority_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="pure_pragma" type="Pure_Pragma"/>

   <xsd:complexType name="Pure_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="queuing_policy_pragma" type="Queuing_Policy_Pragma"/>

   <xsd:complexType name="Queuing_Policy_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="remote_call_interface_pragma" type="Remote_Call_Interface_Pragma"/>

   <xsd:complexType name="Remote_Call_Interface_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="remote_types_pragma" type="Remote_Types_Pragma"/>

   <xsd:complexType name="Remote_Types_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="restrictions_pragma" type="Restrictions_Pragma"/>

   <xsd:complexType name="Restrictions_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="reviewable_pragma" type="Reviewable_Pragma"/>

   <xsd:complexType name="Reviewable_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="shared_passive_pragma" type="Shared_Passive_Pragma"/>

   <xsd:complexType name="Shared_Passive_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="storage_size_pragma" type="Storage_Size_Pragma"/>

   <xsd:complexType name="Storage_Size_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="suppress_pragma" type="Suppress_Pragma"/>

   <xsd:complexType name="Suppress_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="task_dispatching_policy_pragma" type="Task_Dispatching_Policy_Pragma"/>

   <xsd:complexType name="Task_Dispatching_Policy_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="volatile_pragma" type="Volatile_Pragma"/>

   <xsd:complexType name="Volatile_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="volatile_components_pragma" type="Volatile_Components_Pragma"/>

   <xsd:complexType name="Volatile_Components_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="assert_pragma" type="Assert_Pragma"/>

   <xsd:complexType name="Assert_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="assertion_policy_pragma" type="Assertion_Policy_Pragma"/>

   <xsd:complexType name="Assertion_Policy_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="detect_blocking_pragma" type="Detect_Blocking_Pragma"/>

   <xsd:complexType name="Detect_Blocking_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="no_return_pragma" type="No_Return_Pragma"/>

   <xsd:complexType name="No_Return_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="partition_elaboration_policy_pragma" type="Partition_Elaboration_Policy_Pragma"/>

   <xsd:complexType name="Partition_Elaboration_Policy_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="preelaborable_initialization_pragma" type="Preelaborable_Initialization_Pragma"/>

   <xsd:complexType name="Preelaborable_Initialization_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="priority_specific_dispatching_pragma" type="Priority_Specific_Dispatching_Pragma"/>

   <xsd:complexType name="Priority_Specific_Dispatching_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="profile_pragma" type="Profile_Pragma"/>

   <xsd:complexType name="Profile_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="relative_deadline_pragma" type="Relative_Deadline_Pragma"/>

   <xsd:complexType name="Relative_Deadline_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unchecked_union_pragma" type="Unchecked_Union_Pragma"/>

   <xsd:complexType name="Unchecked_Union_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unsuppress_pragma" type="Unsuppress_Pragma"/>

   <xsd:complexType name="Unsuppress_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="default_storage_pool_pragma" type="Default_Storage_Pool_Pragma"/>

   <xsd:complexType name="Default_Storage_Pool_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="dispatching_domain_pragma" type="Dispatching_Domain_Pragma"/>

   <xsd:complexType name="Dispatching_Domain_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="cpu_pragma" type="Cpu_Pragma"/>

   <xsd:complexType name="Cpu_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="independent_pragma" type="Independent_Pragma"/>

   <xsd:complexType name="Independent_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="independent_components_pragma" type="Independent_Components_Pragma"/>

   <xsd:complexType name="Independent_Components_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="implementation_defined_pragma" type="Implementation_Defined_Pragma"/>

   <xsd:complexType name="Implementation_Defined_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unknown_pragma" type="Unknown_Pragma"/>

   <xsd:complexType name="Unknown_Pragma">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="pragma_argument_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="pragma_name" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="ordinary_type_declaration" type="Ordinary_Type_Declaration"/>

   <xsd:complexType name="Ordinary_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="task_type_declaration" type="Task_Type_Declaration"/>

   <xsd:complexType name="Task_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="declaration_interface_list_ql" type="Expression_List"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="protected_type_declaration" type="Protected_Type_Declaration"/>

   <xsd:complexType name="Protected_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="declaration_interface_list_ql" type="Expression_List"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="incomplete_type_declaration" type="Incomplete_Type_Declaration"/>

   <xsd:complexType name="Incomplete_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="tagged_incomplete_type_declaration" type="Tagged_Incomplete_Type_Declaration"/>

   <xsd:complexType name="Tagged_Incomplete_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="private_type_declaration" type="Private_Type_Declaration"/>

   <xsd:complexType name="Private_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="private_extension_declaration" type="Private_Extension_Declaration"/>

   <xsd:complexType name="Private_Extension_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="subtype_declaration" type="Subtype_Declaration"/>

   <xsd:complexType name="Subtype_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="variable_declaration" type="Variable_Declaration"/>

   <xsd:complexType name="Variable_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="constant_declaration" type="Constant_Declaration"/>

   <xsd:complexType name="Constant_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="deferred_constant_declaration" type="Deferred_Constant_Declaration"/>

   <xsd:complexType name="Deferred_Constant_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="single_task_declaration" type="Single_Task_Declaration"/>

   <xsd:complexType name="Single_Task_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="declaration_interface_list_ql" type="Expression_List"/>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="single_protected_declaration" type="Single_Protected_Declaration"/>

   <xsd:complexType name="Single_Protected_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="declaration_interface_list_ql" type="Expression_List"/>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="integer_number_declaration" type="Integer_Number_Declaration"/>

   <xsd:complexType name="Integer_Number_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="real_number_declaration" type="Real_Number_Declaration"/>

   <xsd:complexType name="Real_Number_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="enumeration_literal_specification" type="Enumeration_Literal_Specification"/>

   <xsd:complexType name="Enumeration_Literal_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discriminant_specification" type="Discriminant_Specification"/>

   <xsd:complexType name="Discriminant_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="component_declaration" type="Component_Declaration"/>

   <xsd:complexType name="Component_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="loop_parameter_specification" type="Loop_Parameter_Specification"/>

   <xsd:complexType name="Loop_Parameter_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_reverse_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="reverse" type="Reverse"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="specification_subtype_definition_q" type="Discrete_Subtype_Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generalized_iterator_specification" type="Generalized_Iterator_Specification"/>

   <xsd:complexType name="Generalized_Iterator_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_reverse_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="reverse" type="Reverse"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="iteration_scheme_name_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="element_iterator_specification" type="Element_Iterator_Specification"/>

   <xsd:complexType name="Element_Iterator_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="subtype_indication_q" type="Element_Class"/>
         <xsd:element name="has_reverse_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="reverse" type="Reverse"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="iteration_scheme_name_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="procedure_declaration" type="Procedure_Declaration"/>

   <xsd:complexType name="Procedure_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="function_declaration" type="Function_Declaration"/>

   <xsd:complexType name="Function_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="parameter_specification" type="Parameter_Specification"/>

   <xsd:complexType name="Parameter_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="mode" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="procedure_body_declaration" type="Procedure_Body_Declaration"/>

   <xsd:complexType name="Procedure_Body_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="body_declarative_items_ql" type="Element_List"/>
         <xsd:element name="body_statements_ql" type="Statement_List"/>
         <xsd:element name="body_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="function_body_declaration" type="Function_Body_Declaration"/>

   <xsd:complexType name="Function_Body_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="body_declarative_items_ql" type="Element_List"/>
         <xsd:element name="body_statements_ql" type="Statement_List"/>
         <xsd:element name="body_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="return_variable_specification" type="Return_Variable_Specification"/>

   <xsd:complexType name="Return_Variable_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="return_constant_specification" type="Return_Constant_Specification"/>

   <xsd:complexType name="Return_Constant_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="null_procedure_declaration" type="Null_Procedure_Declaration"/>

   <xsd:complexType name="Null_Procedure_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="expression_function_declaration" type="Expression_Function_Declaration"/>

   <xsd:complexType name="Expression_Function_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="result_expression_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="package_declaration" type="Package_Declaration"/>

   <xsd:complexType name="Package_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="visible_part_declarative_items_ql" type="Declarative_Item_List"/>
         <xsd:element name="private_part_declarative_items_ql" type="Declarative_Item_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="package_body_declaration" type="Package_Body_Declaration"/>

   <xsd:complexType name="Package_Body_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="body_declarative_items_ql" type="Element_List"/>
         <xsd:element name="body_statements_ql" type="Statement_List"/>
         <xsd:element name="body_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="object_renaming_declaration" type="Object_Renaming_Declaration"/>

   <xsd:complexType name="Object_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="exception_renaming_declaration" type="Exception_Renaming_Declaration"/>

   <xsd:complexType name="Exception_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="package_renaming_declaration" type="Package_Renaming_Declaration"/>

   <xsd:complexType name="Package_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="procedure_renaming_declaration" type="Procedure_Renaming_Declaration"/>

   <xsd:complexType name="Procedure_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="function_renaming_declaration" type="Function_Renaming_Declaration"/>

   <xsd:complexType name="Function_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_package_renaming_declaration" type="Generic_Package_Renaming_Declaration"/>

   <xsd:complexType name="Generic_Package_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_procedure_renaming_declaration" type="Generic_Procedure_Renaming_Declaration"/>

   <xsd:complexType name="Generic_Procedure_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_function_renaming_declaration" type="Generic_Function_Renaming_Declaration"/>

   <xsd:complexType name="Generic_Function_Renaming_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="renamed_entity_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="task_body_declaration" type="Task_Body_Declaration"/>

   <xsd:complexType name="Task_Body_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="body_declarative_items_ql" type="Element_List"/>
         <xsd:element name="body_statements_ql" type="Statement_List"/>
         <xsd:element name="body_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="protected_body_declaration" type="Protected_Body_Declaration"/>

   <xsd:complexType name="Protected_Body_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="protected_operation_items_ql" type="Declaration_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="entry_declaration" type="Entry_Declaration"/>

   <xsd:complexType name="Entry_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="entry_family_definition_q" type="Discrete_Subtype_Definition_Class"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="entry_body_declaration" type="Entry_Body_Declaration"/>

   <xsd:complexType name="Entry_Body_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="entry_index_specification_q" type="Declaration_Class"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="entry_barrier_q" type="Expression_Class"/>
         <xsd:element name="body_declarative_items_ql" type="Element_List"/>
         <xsd:element name="body_statements_ql" type="Statement_List"/>
         <xsd:element name="body_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="entry_index_specification" type="Entry_Index_Specification"/>

   <xsd:complexType name="Entry_Index_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="specification_subtype_definition_q" type="Discrete_Subtype_Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="procedure_body_stub" type="Procedure_Body_Stub"/>

   <xsd:complexType name="Procedure_Body_Stub">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="function_body_stub" type="Function_Body_Stub"/>

   <xsd:complexType name="Function_Body_Stub">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="package_body_stub" type="Package_Body_Stub"/>

   <xsd:complexType name="Package_Body_Stub">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="task_body_stub" type="Task_Body_Stub"/>

   <xsd:complexType name="Task_Body_Stub">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="protected_body_stub" type="Protected_Body_Stub"/>

   <xsd:complexType name="Protected_Body_Stub">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="exception_declaration" type="Exception_Declaration"/>

   <xsd:complexType name="Exception_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="choice_parameter_specification" type="Choice_Parameter_Specification"/>

   <xsd:complexType name="Choice_Parameter_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_procedure_declaration" type="Generic_Procedure_Declaration"/>

   <xsd:complexType name="Generic_Procedure_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="generic_formal_part_ql" type="Element_List"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_function_declaration" type="Generic_Function_Declaration"/>

   <xsd:complexType name="Generic_Function_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="generic_formal_part_ql" type="Element_List"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_package_declaration" type="Generic_Package_Declaration"/>

   <xsd:complexType name="Generic_Package_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="generic_formal_part_ql" type="Element_List"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
         <xsd:element name="visible_part_declarative_items_ql" type="Declarative_Item_List"/>
         <xsd:element name="private_part_declarative_items_ql" type="Declarative_Item_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="package_instantiation" type="Package_Instantiation"/>

   <xsd:complexType name="Package_Instantiation">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="generic_unit_name_q" type="Expression_Class"/>
         <xsd:element name="generic_actual_part_ql" type="Association_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="procedure_instantiation" type="Procedure_Instantiation"/>

   <xsd:complexType name="Procedure_Instantiation">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="generic_unit_name_q" type="Expression_Class"/>
         <xsd:element name="generic_actual_part_ql" type="Association_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="function_instantiation" type="Function_Instantiation"/>

   <xsd:complexType name="Function_Instantiation">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="is_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="overriding" type="Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_not_overriding_declaration_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_overriding" type="Not_Overriding"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="generic_unit_name_q" type="Expression_Class"/>
         <xsd:element name="generic_actual_part_ql" type="Association_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_object_declaration" type="Formal_Object_Declaration"/>

   <xsd:complexType name="Formal_Object_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="object_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="initialization_expression_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="mode" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_type_declaration" type="Formal_Type_Declaration"/>

   <xsd:complexType name="Formal_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="type_declaration_view_q" type="Definition_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_incomplete_type_declaration" type="Formal_Incomplete_Type_Declaration"/>

   <xsd:complexType name="Formal_Incomplete_Type_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="discriminant_part_q" type="Definition_Class"/>
         <xsd:element name="has_tagged_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="tagged" type="Tagged"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_procedure_declaration" type="Formal_Procedure_Declaration"/>

   <xsd:complexType name="Formal_Procedure_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="formal_subprogram_default_q" type="Expression_Class"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_function_declaration" type="Formal_Function_Declaration"/>

   <xsd:complexType name="Formal_Function_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="result_profile_q" type="Element_Class"/>
         <xsd:element name="formal_subprogram_default_q" type="Expression_Class"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_package_declaration" type="Formal_Package_Declaration"/>

   <xsd:complexType name="Formal_Package_Declaration">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="generic_unit_name_q" type="Expression_Class"/>
         <xsd:element name="generic_actual_part_ql" type="Association_List"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_package_declaration_with_box" type="Formal_Package_Declaration_With_Box"/>

   <xsd:complexType name="Formal_Package_Declaration_With_Box">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="names_ql" type="Defining_Name_List"/>
         <xsd:element name="generic_unit_name_q" type="Expression_Class"/>
         <xsd:element name="aspect_specifications_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="derived_type_definition" type="Derived_Type_Definition"/>

   <xsd:complexType name="Derived_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="parent_subtype_indication_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="derived_record_extension_definition" type="Derived_Record_Extension_Definition"/>

   <xsd:complexType name="Derived_Record_Extension_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="parent_subtype_indication_q" type="Element_Class"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
         <xsd:element name="record_definition_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="enumeration_type_definition" type="Enumeration_Type_Definition"/>

   <xsd:complexType name="Enumeration_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="enumeration_literal_declarations_ql" type="Declaration_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="signed_integer_type_definition" type="Signed_Integer_Type_Definition"/>

   <xsd:complexType name="Signed_Integer_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="integer_constraint_q" type="Range_Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="modular_type_definition" type="Modular_Type_Definition"/>

   <xsd:complexType name="Modular_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="mod_static_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="root_integer_definition" type="Root_Integer_Definition"/>

   <xsd:complexType name="Root_Integer_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="root_real_definition" type="Root_Real_Definition"/>

   <xsd:complexType name="Root_Real_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="universal_integer_definition" type="Universal_Integer_Definition"/>

   <xsd:complexType name="Universal_Integer_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="universal_real_definition" type="Universal_Real_Definition"/>

   <xsd:complexType name="Universal_Real_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="universal_fixed_definition" type="Universal_Fixed_Definition"/>

   <xsd:complexType name="Universal_Fixed_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="floating_point_definition" type="Floating_Point_Definition"/>

   <xsd:complexType name="Floating_Point_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="digits_expression_q" type="Expression_Class"/>
         <xsd:element name="real_range_constraint_q" type="Range_Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="ordinary_fixed_point_definition" type="Ordinary_Fixed_Point_Definition"/>

   <xsd:complexType name="Ordinary_Fixed_Point_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="delta_expression_q" type="Expression_Class"/>
         <xsd:element name="real_range_constraint_q" type="Range_Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="decimal_fixed_point_definition" type="Decimal_Fixed_Point_Definition"/>

   <xsd:complexType name="Decimal_Fixed_Point_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="delta_expression_q" type="Expression_Class"/>
         <xsd:element name="digits_expression_q" type="Expression_Class"/>
         <xsd:element name="real_range_constraint_q" type="Range_Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unconstrained_array_definition" type="Unconstrained_Array_Definition"/>

   <xsd:complexType name="Unconstrained_Array_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="index_subtype_definitions_ql" type="Expression_List"/>
         <xsd:element name="array_component_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="constrained_array_definition" type="Constrained_Array_Definition"/>

   <xsd:complexType name="Constrained_Array_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discrete_subtype_definitions_ql" type="Definition_List"/>
         <xsd:element name="array_component_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="record_type_definition" type="Record_Type_Definition"/>

   <xsd:complexType name="Record_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="record_definition_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="tagged_record_type_definition" type="Tagged_Record_Type_Definition"/>

   <xsd:complexType name="Tagged_Record_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="record_definition_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="ordinary_interface" type="Ordinary_Interface"/>

   <xsd:complexType name="Ordinary_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="limited_interface" type="Limited_Interface"/>

   <xsd:complexType name="Limited_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="task_interface" type="Task_Interface"/>

   <xsd:complexType name="Task_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="protected_interface" type="Protected_Interface"/>

   <xsd:complexType name="Protected_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="synchronized_interface" type="Synchronized_Interface"/>

   <xsd:complexType name="Synchronized_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="pool_specific_access_to_variable" type="Pool_Specific_Access_To_Variable"/>

   <xsd:complexType name="Pool_Specific_Access_To_Variable">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_object_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_to_variable" type="Access_To_Variable"/>

   <xsd:complexType name="Access_To_Variable">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_object_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_to_constant" type="Access_To_Constant"/>

   <xsd:complexType name="Access_To_Constant">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_object_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_to_procedure" type="Access_To_Procedure"/>

   <xsd:complexType name="Access_To_Procedure">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_to_protected_procedure" type="Access_To_Protected_Procedure"/>

   <xsd:complexType name="Access_To_Protected_Procedure">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_to_function" type="Access_To_Function"/>

   <xsd:complexType name="Access_To_Function">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_function_result_profile_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_to_protected_function" type="Access_To_Protected_Function"/>

   <xsd:complexType name="Access_To_Protected_Function">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_function_result_profile_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="subtype_indication" type="Subtype_Indication"/>

   <xsd:complexType name="Subtype_Indication">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="subtype_mark_q" type="Expression_Class"/>
         <xsd:element name="subtype_constraint_q" type="Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="range_attribute_reference" type="Range_Attribute_Reference"/>

   <xsd:complexType name="Range_Attribute_Reference">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="range_attribute_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="simple_expression_range" type="Simple_Expression_Range"/>

   <xsd:complexType name="Simple_Expression_Range">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="lower_bound_q" type="Expression_Class"/>
         <xsd:element name="upper_bound_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="digits_constraint" type="Digits_Constraint"/>

   <xsd:complexType name="Digits_Constraint">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="digits_expression_q" type="Expression_Class"/>
         <xsd:element name="real_range_constraint_q" type="Range_Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="delta_constraint" type="Delta_Constraint"/>

   <xsd:complexType name="Delta_Constraint">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="delta_expression_q" type="Expression_Class"/>
         <xsd:element name="real_range_constraint_q" type="Range_Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="index_constraint" type="Index_Constraint"/>

   <xsd:complexType name="Index_Constraint">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discrete_ranges_ql" type="Discrete_Range_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discriminant_constraint" type="Discriminant_Constraint"/>

   <xsd:complexType name="Discriminant_Constraint">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discriminant_associations_ql" type="Discriminant_Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="component_definition" type="Component_Definition"/>

   <xsd:complexType name="Component_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_aliased_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="aliased" type="Aliased"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="component_definition_view_q" type="Definition_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discrete_subtype_indication_as_subtype_definition" type="Discrete_Subtype_Indication_As_Subtype_Definition"/>

   <xsd:complexType name="Discrete_Subtype_Indication_As_Subtype_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="subtype_mark_q" type="Expression_Class"/>
         <xsd:element name="subtype_constraint_q" type="Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discrete_range_attribute_reference_as_subtype_definition" type="Discrete_Range_Attribute_Reference_As_Subtype_Definition"/>

   <xsd:complexType name="Discrete_Range_Attribute_Reference_As_Subtype_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="range_attribute_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discrete_simple_expression_range_as_subtype_definition" type="Discrete_Simple_Expression_Range_As_Subtype_Definition"/>

   <xsd:complexType name="Discrete_Simple_Expression_Range_As_Subtype_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="lower_bound_q" type="Expression_Class"/>
         <xsd:element name="upper_bound_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discrete_subtype_indication" type="Discrete_Subtype_Indication"/>

   <xsd:complexType name="Discrete_Subtype_Indication">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="subtype_mark_q" type="Expression_Class"/>
         <xsd:element name="subtype_constraint_q" type="Constraint_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discrete_range_attribute_reference" type="Discrete_Range_Attribute_Reference"/>

   <xsd:complexType name="Discrete_Range_Attribute_Reference">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="range_attribute_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discrete_simple_expression_range" type="Discrete_Simple_Expression_Range"/>

   <xsd:complexType name="Discrete_Simple_Expression_Range">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="lower_bound_q" type="Expression_Class"/>
         <xsd:element name="upper_bound_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unknown_discriminant_part" type="Unknown_Discriminant_Part"/>

   <xsd:complexType name="Unknown_Discriminant_Part">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="known_discriminant_part" type="Known_Discriminant_Part"/>

   <xsd:complexType name="Known_Discriminant_Part">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discriminants_ql" type="Discriminant_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="record_definition" type="Record_Definition"/>

   <xsd:complexType name="Record_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="record_components_ql" type="Record_Component_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="null_record_definition" type="Null_Record_Definition"/>

   <xsd:complexType name="Null_Record_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="null_component" type="Null_Component"/>

   <xsd:complexType name="Null_Component">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="variant_part" type="Variant_Part"/>

   <xsd:complexType name="Variant_Part">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discriminant_direct_name_q" type="Name_Class"/>
         <xsd:element name="variants_ql" type="Variant_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="variant" type="Variant"/>

   <xsd:complexType name="Variant">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="variant_choices_ql" type="Element_List"/>
         <xsd:element name="record_components_ql" type="Record_Component_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="others_choice" type="Others_Choice"/>

   <xsd:complexType name="Others_Choice">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="anonymous_access_to_variable" type="Anonymous_Access_To_Variable"/>

   <xsd:complexType name="Anonymous_Access_To_Variable">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="anonymous_access_to_object_subtype_mark_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="anonymous_access_to_constant" type="Anonymous_Access_To_Constant"/>

   <xsd:complexType name="Anonymous_Access_To_Constant">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="anonymous_access_to_object_subtype_mark_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="anonymous_access_to_procedure" type="Anonymous_Access_To_Procedure"/>

   <xsd:complexType name="Anonymous_Access_To_Procedure">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="anonymous_access_to_protected_procedure" type="Anonymous_Access_To_Protected_Procedure"/>

   <xsd:complexType name="Anonymous_Access_To_Protected_Procedure">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="anonymous_access_to_function" type="Anonymous_Access_To_Function"/>

   <xsd:complexType name="Anonymous_Access_To_Function">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_function_result_profile_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="anonymous_access_to_protected_function" type="Anonymous_Access_To_Protected_Function"/>

   <xsd:complexType name="Anonymous_Access_To_Protected_Function">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_function_result_profile_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="private_type_definition" type="Private_Type_Definition"/>

   <xsd:complexType name="Private_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="tagged_private_type_definition" type="Tagged_Private_Type_Definition"/>

   <xsd:complexType name="Tagged_Private_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="private_extension_definition" type="Private_Extension_Definition"/>

   <xsd:complexType name="Private_Extension_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_synchronized_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="synchronized" type="Synchronized"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="ancestor_subtype_indication_q" type="Element_Class"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="task_definition" type="Task_Definition"/>

   <xsd:complexType name="Task_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="visible_part_items_ql" type="Declarative_Item_List"/>
         <xsd:element name="private_part_items_ql" type="Declarative_Item_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="protected_definition" type="Protected_Definition"/>

   <xsd:complexType name="Protected_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="visible_part_items_ql" type="Declarative_Item_List"/>
         <xsd:element name="private_part_items_ql" type="Declarative_Item_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_private_type_definition" type="Formal_Private_Type_Definition"/>

   <xsd:complexType name="Formal_Private_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_tagged_private_type_definition" type="Formal_Tagged_Private_Type_Definition"/>

   <xsd:complexType name="Formal_Tagged_Private_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_derived_type_definition" type="Formal_Derived_Type_Definition"/>

   <xsd:complexType name="Formal_Derived_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_abstract_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="abstract" type="Abstract"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_synchronized_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="synchronized" type="Synchronized"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="subtype_mark_q" type="Expression_Class"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
         <xsd:element name="has_private_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="private" type="Private"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_discrete_type_definition" type="Formal_Discrete_Type_Definition"/>

   <xsd:complexType name="Formal_Discrete_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_signed_integer_type_definition" type="Formal_Signed_Integer_Type_Definition"/>

   <xsd:complexType name="Formal_Signed_Integer_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_modular_type_definition" type="Formal_Modular_Type_Definition"/>

   <xsd:complexType name="Formal_Modular_Type_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_floating_point_definition" type="Formal_Floating_Point_Definition"/>

   <xsd:complexType name="Formal_Floating_Point_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_ordinary_fixed_point_definition" type="Formal_Ordinary_Fixed_Point_Definition"/>

   <xsd:complexType name="Formal_Ordinary_Fixed_Point_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_decimal_fixed_point_definition" type="Formal_Decimal_Fixed_Point_Definition"/>

   <xsd:complexType name="Formal_Decimal_Fixed_Point_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_ordinary_interface" type="Formal_Ordinary_Interface"/>

   <xsd:complexType name="Formal_Ordinary_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_limited_interface" type="Formal_Limited_Interface"/>

   <xsd:complexType name="Formal_Limited_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_task_interface" type="Formal_Task_Interface"/>

   <xsd:complexType name="Formal_Task_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_protected_interface" type="Formal_Protected_Interface"/>

   <xsd:complexType name="Formal_Protected_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_synchronized_interface" type="Formal_Synchronized_Interface"/>

   <xsd:complexType name="Formal_Synchronized_Interface">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="definition_interface_list_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_unconstrained_array_definition" type="Formal_Unconstrained_Array_Definition"/>

   <xsd:complexType name="Formal_Unconstrained_Array_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="index_subtype_definitions_ql" type="Expression_List"/>
         <xsd:element name="array_component_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_constrained_array_definition" type="Formal_Constrained_Array_Definition"/>

   <xsd:complexType name="Formal_Constrained_Array_Definition">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discrete_subtype_definitions_ql" type="Definition_List"/>
         <xsd:element name="array_component_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_pool_specific_access_to_variable" type="Formal_Pool_Specific_Access_To_Variable"/>

   <xsd:complexType name="Formal_Pool_Specific_Access_To_Variable">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_object_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_access_to_variable" type="Formal_Access_To_Variable"/>

   <xsd:complexType name="Formal_Access_To_Variable">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_object_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_access_to_constant" type="Formal_Access_To_Constant"/>

   <xsd:complexType name="Formal_Access_To_Constant">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_object_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_access_to_procedure" type="Formal_Access_To_Procedure"/>

   <xsd:complexType name="Formal_Access_To_Procedure">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_access_to_protected_procedure" type="Formal_Access_To_Protected_Procedure"/>

   <xsd:complexType name="Formal_Access_To_Protected_Procedure">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_access_to_function" type="Formal_Access_To_Function"/>

   <xsd:complexType name="Formal_Access_To_Function">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_function_result_profile_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="formal_access_to_protected_function" type="Formal_Access_To_Protected_Function"/>

   <xsd:complexType name="Formal_Access_To_Protected_Function">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_null_exclusion_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="null_exclusion" type="Null_Exclusion"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_subprogram_parameter_profile_ql" type="Parameter_Specification_List"/>
         <xsd:element name="is_not_null_return_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="not_null_return" type="Not_Null_Return"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="access_to_function_result_profile_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="aspect_specification" type="Aspect_Specification"/>

   <xsd:complexType name="Aspect_Specification">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="aspect_mark_q" type="Element_Class"/>
         <xsd:element name="aspect_definition_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="box_expression" type="Box_Expression"/>

   <xsd:complexType name="Box_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="integer_literal" type="Integer_Literal"/>

   <xsd:complexType name="Integer_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="lit_val" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="real_literal" type="Real_Literal"/>

   <xsd:complexType name="Real_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="lit_val" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="string_literal" type="String_Literal"/>

   <xsd:complexType name="String_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="lit_val" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="explicit_dereference" type="Explicit_Dereference"/>

   <xsd:complexType name="Explicit_Dereference">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="function_call" type="Function_Call"/>

   <xsd:complexType name="Function_Call">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="function_call_parameters_ql" type="Association_List"/>
         <xsd:element name="is_prefix_call_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="is_prefix_call" type="Is_Prefix_Call"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="is_prefix_notation_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="is_prefix_notation" type="Is_Prefix_Notation"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="indexed_component" type="Indexed_Component"/>

   <xsd:complexType name="Indexed_Component">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="index_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="slice" type="Slice"/>

   <xsd:complexType name="Slice">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="slice_range_q" type="Discrete_Range_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="selected_component" type="Selected_Component"/>

   <xsd:complexType name="Selected_Component">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="selector_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="access_attribute" type="Access_Attribute"/>

   <xsd:complexType name="Access_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="address_attribute" type="Address_Attribute"/>

   <xsd:complexType name="Address_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="adjacent_attribute" type="Adjacent_Attribute"/>

   <xsd:complexType name="Adjacent_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="aft_attribute" type="Aft_Attribute"/>

   <xsd:complexType name="Aft_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="alignment_attribute" type="Alignment_Attribute"/>

   <xsd:complexType name="Alignment_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="base_attribute" type="Base_Attribute"/>

   <xsd:complexType name="Base_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="bit_order_attribute" type="Bit_Order_Attribute"/>

   <xsd:complexType name="Bit_Order_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="body_version_attribute" type="Body_Version_Attribute"/>

   <xsd:complexType name="Body_Version_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="callable_attribute" type="Callable_Attribute"/>

   <xsd:complexType name="Callable_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="caller_attribute" type="Caller_Attribute"/>

   <xsd:complexType name="Caller_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="ceiling_attribute" type="Ceiling_Attribute"/>

   <xsd:complexType name="Ceiling_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="class_attribute" type="Class_Attribute"/>

   <xsd:complexType name="Class_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="component_size_attribute" type="Component_Size_Attribute"/>

   <xsd:complexType name="Component_Size_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="compose_attribute" type="Compose_Attribute"/>

   <xsd:complexType name="Compose_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="constrained_attribute" type="Constrained_Attribute"/>

   <xsd:complexType name="Constrained_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="copy_sign_attribute" type="Copy_Sign_Attribute"/>

   <xsd:complexType name="Copy_Sign_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="count_attribute" type="Count_Attribute"/>

   <xsd:complexType name="Count_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="definite_attribute" type="Definite_Attribute"/>

   <xsd:complexType name="Definite_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="delta_attribute" type="Delta_Attribute"/>

   <xsd:complexType name="Delta_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="denorm_attribute" type="Denorm_Attribute"/>

   <xsd:complexType name="Denorm_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="digits_attribute" type="Digits_Attribute"/>

   <xsd:complexType name="Digits_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="exponent_attribute" type="Exponent_Attribute"/>

   <xsd:complexType name="Exponent_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="external_tag_attribute" type="External_Tag_Attribute"/>

   <xsd:complexType name="External_Tag_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="first_attribute" type="First_Attribute"/>

   <xsd:complexType name="First_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="first_bit_attribute" type="First_Bit_Attribute"/>

   <xsd:complexType name="First_Bit_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="floor_attribute" type="Floor_Attribute"/>

   <xsd:complexType name="Floor_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="fore_attribute" type="Fore_Attribute"/>

   <xsd:complexType name="Fore_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="fraction_attribute" type="Fraction_Attribute"/>

   <xsd:complexType name="Fraction_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="identity_attribute" type="Identity_Attribute"/>

   <xsd:complexType name="Identity_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="image_attribute" type="Image_Attribute"/>

   <xsd:complexType name="Image_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="input_attribute" type="Input_Attribute"/>

   <xsd:complexType name="Input_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="last_attribute" type="Last_Attribute"/>

   <xsd:complexType name="Last_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="last_bit_attribute" type="Last_Bit_Attribute"/>

   <xsd:complexType name="Last_Bit_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="leading_part_attribute" type="Leading_Part_Attribute"/>

   <xsd:complexType name="Leading_Part_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="length_attribute" type="Length_Attribute"/>

   <xsd:complexType name="Length_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_attribute" type="Machine_Attribute"/>

   <xsd:complexType name="Machine_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_emax_attribute" type="Machine_Emax_Attribute"/>

   <xsd:complexType name="Machine_Emax_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_emin_attribute" type="Machine_Emin_Attribute"/>

   <xsd:complexType name="Machine_Emin_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_mantissa_attribute" type="Machine_Mantissa_Attribute"/>

   <xsd:complexType name="Machine_Mantissa_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_overflows_attribute" type="Machine_Overflows_Attribute"/>

   <xsd:complexType name="Machine_Overflows_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_radix_attribute" type="Machine_Radix_Attribute"/>

   <xsd:complexType name="Machine_Radix_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_rounds_attribute" type="Machine_Rounds_Attribute"/>

   <xsd:complexType name="Machine_Rounds_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="max_attribute" type="Max_Attribute"/>

   <xsd:complexType name="Max_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="max_size_in_storage_elements_attribute" type="Max_Size_In_Storage_Elements_Attribute"/>

   <xsd:complexType name="Max_Size_In_Storage_Elements_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="min_attribute" type="Min_Attribute"/>

   <xsd:complexType name="Min_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="model_attribute" type="Model_Attribute"/>

   <xsd:complexType name="Model_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="model_emin_attribute" type="Model_Emin_Attribute"/>

   <xsd:complexType name="Model_Emin_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="model_epsilon_attribute" type="Model_Epsilon_Attribute"/>

   <xsd:complexType name="Model_Epsilon_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="model_mantissa_attribute" type="Model_Mantissa_Attribute"/>

   <xsd:complexType name="Model_Mantissa_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="model_small_attribute" type="Model_Small_Attribute"/>

   <xsd:complexType name="Model_Small_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="modulus_attribute" type="Modulus_Attribute"/>

   <xsd:complexType name="Modulus_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="output_attribute" type="Output_Attribute"/>

   <xsd:complexType name="Output_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="partition_id_attribute" type="Partition_Id_Attribute"/>

   <xsd:complexType name="Partition_Id_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="pos_attribute" type="Pos_Attribute"/>

   <xsd:complexType name="Pos_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="position_attribute" type="Position_Attribute"/>

   <xsd:complexType name="Position_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="pred_attribute" type="Pred_Attribute"/>

   <xsd:complexType name="Pred_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="range_attribute" type="Range_Attribute"/>

   <xsd:complexType name="Range_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="read_attribute" type="Read_Attribute"/>

   <xsd:complexType name="Read_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="remainder_attribute" type="Remainder_Attribute"/>

   <xsd:complexType name="Remainder_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="round_attribute" type="Round_Attribute"/>

   <xsd:complexType name="Round_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="rounding_attribute" type="Rounding_Attribute"/>

   <xsd:complexType name="Rounding_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="safe_first_attribute" type="Safe_First_Attribute"/>

   <xsd:complexType name="Safe_First_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="safe_last_attribute" type="Safe_Last_Attribute"/>

   <xsd:complexType name="Safe_Last_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="scale_attribute" type="Scale_Attribute"/>

   <xsd:complexType name="Scale_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="scaling_attribute" type="Scaling_Attribute"/>

   <xsd:complexType name="Scaling_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="signed_zeros_attribute" type="Signed_Zeros_Attribute"/>

   <xsd:complexType name="Signed_Zeros_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="size_attribute" type="Size_Attribute"/>

   <xsd:complexType name="Size_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="small_attribute" type="Small_Attribute"/>

   <xsd:complexType name="Small_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="storage_pool_attribute" type="Storage_Pool_Attribute"/>

   <xsd:complexType name="Storage_Pool_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="storage_size_attribute" type="Storage_Size_Attribute"/>

   <xsd:complexType name="Storage_Size_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="succ_attribute" type="Succ_Attribute"/>

   <xsd:complexType name="Succ_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="tag_attribute" type="Tag_Attribute"/>

   <xsd:complexType name="Tag_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="terminated_attribute" type="Terminated_Attribute"/>

   <xsd:complexType name="Terminated_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="truncation_attribute" type="Truncation_Attribute"/>

   <xsd:complexType name="Truncation_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unbiased_rounding_attribute" type="Unbiased_Rounding_Attribute"/>

   <xsd:complexType name="Unbiased_Rounding_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unchecked_access_attribute" type="Unchecked_Access_Attribute"/>

   <xsd:complexType name="Unchecked_Access_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="val_attribute" type="Val_Attribute"/>

   <xsd:complexType name="Val_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="valid_attribute" type="Valid_Attribute"/>

   <xsd:complexType name="Valid_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="value_attribute" type="Value_Attribute"/>

   <xsd:complexType name="Value_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="version_attribute" type="Version_Attribute"/>

   <xsd:complexType name="Version_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="wide_image_attribute" type="Wide_Image_Attribute"/>

   <xsd:complexType name="Wide_Image_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="wide_value_attribute" type="Wide_Value_Attribute"/>

   <xsd:complexType name="Wide_Value_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="wide_width_attribute" type="Wide_Width_Attribute"/>

   <xsd:complexType name="Wide_Width_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="width_attribute" type="Width_Attribute"/>

   <xsd:complexType name="Width_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="write_attribute" type="Write_Attribute"/>

   <xsd:complexType name="Write_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="machine_rounding_attribute" type="Machine_Rounding_Attribute"/>

   <xsd:complexType name="Machine_Rounding_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="mod_attribute" type="Mod_Attribute"/>

   <xsd:complexType name="Mod_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="priority_attribute" type="Priority_Attribute"/>

   <xsd:complexType name="Priority_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="stream_size_attribute" type="Stream_Size_Attribute"/>

   <xsd:complexType name="Stream_Size_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="wide_wide_image_attribute" type="Wide_Wide_Image_Attribute"/>

   <xsd:complexType name="Wide_Wide_Image_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="wide_wide_value_attribute" type="Wide_Wide_Value_Attribute"/>

   <xsd:complexType name="Wide_Wide_Value_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="wide_wide_width_attribute" type="Wide_Wide_Width_Attribute"/>

   <xsd:complexType name="Wide_Wide_Width_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="max_alignment_for_allocation_attribute" type="Max_Alignment_For_Allocation_Attribute"/>

   <xsd:complexType name="Max_Alignment_For_Allocation_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="overlaps_storage_attribute" type="Overlaps_Storage_Attribute"/>

   <xsd:complexType name="Overlaps_Storage_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="implementation_defined_attribute" type="Implementation_Defined_Attribute"/>

   <xsd:complexType name="Implementation_Defined_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="unknown_attribute" type="Unknown_Attribute"/>

   <xsd:complexType name="Unknown_Attribute">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="prefix_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_identifier_q" type="Expression_Class"/>
         <xsd:element name="attribute_designator_expressions_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="record_aggregate" type="Record_Aggregate"/>

   <xsd:complexType name="Record_Aggregate">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="record_component_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="extension_aggregate" type="Extension_Aggregate"/>

   <xsd:complexType name="Extension_Aggregate">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="extension_aggregate_expression_q" type="Expression_Class"/>
         <xsd:element name="record_component_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="positional_array_aggregate" type="Positional_Array_Aggregate"/>

   <xsd:complexType name="Positional_Array_Aggregate">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="array_component_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="named_array_aggregate" type="Named_Array_Aggregate"/>

   <xsd:complexType name="Named_Array_Aggregate">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="array_component_associations_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="and_then_short_circuit" type="And_Then_Short_Circuit"/>

   <xsd:complexType name="And_Then_Short_Circuit">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="short_circuit_operation_left_expression_q" type="Expression_Class"/>
         <xsd:element name="short_circuit_operation_right_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="or_else_short_circuit" type="Or_Else_Short_Circuit"/>

   <xsd:complexType name="Or_Else_Short_Circuit">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="short_circuit_operation_left_expression_q" type="Expression_Class"/>
         <xsd:element name="short_circuit_operation_right_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="in_membership_test" type="In_Membership_Test"/>

   <xsd:complexType name="In_Membership_Test">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="membership_test_expression_q" type="Expression_Class"/>
         <xsd:element name="membership_test_choices_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="not_in_membership_test" type="Not_In_Membership_Test"/>

   <xsd:complexType name="Not_In_Membership_Test">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="membership_test_expression_q" type="Expression_Class"/>
         <xsd:element name="membership_test_choices_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="null_literal" type="Null_Literal"/>

   <xsd:complexType name="Null_Literal">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="parenthesized_expression" type="Parenthesized_Expression"/>

   <xsd:complexType name="Parenthesized_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="expression_parenthesized_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="raise_expression" type="Raise_Expression"/>

   <xsd:complexType name="Raise_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="raised_exception_q" type="Expression_Class"/>
         <xsd:element name="associated_message_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="type_conversion" type="Type_Conversion"/>

   <xsd:complexType name="Type_Conversion">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="converted_or_qualified_subtype_mark_q" type="Expression_Class"/>
         <xsd:element name="converted_or_qualified_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="qualified_expression" type="Qualified_Expression"/>

   <xsd:complexType name="Qualified_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="converted_or_qualified_subtype_mark_q" type="Expression_Class"/>
         <xsd:element name="converted_or_qualified_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="allocation_from_subtype" type="Allocation_From_Subtype"/>

   <xsd:complexType name="Allocation_From_Subtype">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="subpool_name_q" type="Expression_Class"/>
         <xsd:element name="allocator_subtype_indication_q" type="Element_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="allocation_from_qualified_expression" type="Allocation_From_Qualified_Expression"/>

   <xsd:complexType name="Allocation_From_Qualified_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="subpool_name_q" type="Expression_Class"/>
         <xsd:element name="allocator_qualified_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="case_expression" type="Case_Expression"/>

   <xsd:complexType name="Case_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="case_expression_q" type="Expression_Class"/>
         <xsd:element name="expression_paths_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="if_expression" type="If_Expression"/>

   <xsd:complexType name="If_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="expression_paths_ql" type="Element_List"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="for_all_quantified_expression" type="For_All_Quantified_Expression"/>

   <xsd:complexType name="For_All_Quantified_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="iterator_specification_q" type="Declaration_Class"/>
         <xsd:element name="predicate_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="for_some_quantified_expression" type="For_Some_Quantified_Expression"/>

   <xsd:complexType name="For_Some_Quantified_Expression">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="iterator_specification_q" type="Declaration_Class"/>
         <xsd:element name="predicate_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="pragma_argument_association" type="Pragma_Argument_Association"/>

   <xsd:complexType name="Pragma_Argument_Association">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="formal_parameter_q" type="Element_Class"/>
         <xsd:element name="actual_parameter_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="discriminant_association" type="Discriminant_Association"/>

   <xsd:complexType name="Discriminant_Association">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="discriminant_selector_names_ql" type="Expression_List"/>
         <xsd:element name="discriminant_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="record_component_association" type="Record_Component_Association"/>

   <xsd:complexType name="Record_Component_Association">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="record_component_choices_ql" type="Expression_List"/>
         <xsd:element name="component_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="array_component_association" type="Array_Component_Association"/>

   <xsd:complexType name="Array_Component_Association">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="array_component_choices_ql" type="Element_List"/>
         <xsd:element name="component_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="parameter_association" type="Parameter_Association"/>

   <xsd:complexType name="Parameter_Association">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="formal_parameter_q" type="Element_Class"/>
         <xsd:element name="actual_parameter_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="generic_association" type="Generic_Association"/>

   <xsd:complexType name="Generic_Association">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="formal_parameter_q" type="Element_Class"/>
         <xsd:element name="actual_parameter_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="null_statement" type="Null_Statement"/>

   <xsd:complexType name="Null_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="assignment_statement" type="Assignment_Statement"/>

   <xsd:complexType name="Assignment_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="assignment_variable_name_q" type="Expression_Class"/>
         <xsd:element name="assignment_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="if_statement" type="If_Statement"/>

   <xsd:complexType name="If_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_paths_ql" type="Path_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="case_statement" type="Case_Statement"/>

   <xsd:complexType name="Case_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="case_expression_q" type="Expression_Class"/>
         <xsd:element name="statement_paths_ql" type="Path_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="loop_statement" type="Loop_Statement"/>

   <xsd:complexType name="Loop_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_identifier_q" type="Defining_Name_Class"/>
         <xsd:element name="loop_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="while_loop_statement" type="While_Loop_Statement"/>

   <xsd:complexType name="While_Loop_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_identifier_q" type="Defining_Name_Class"/>
         <xsd:element name="while_condition_q" type="Expression_Class"/>
         <xsd:element name="loop_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="for_loop_statement" type="For_Loop_Statement"/>

   <xsd:complexType name="For_Loop_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_identifier_q" type="Defining_Name_Class"/>
         <xsd:element name="for_loop_parameter_specification_q" type="Declaration_Class"/>
         <xsd:element name="loop_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="block_statement" type="Block_Statement"/>

   <xsd:complexType name="Block_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_identifier_q" type="Defining_Name_Class"/>
         <xsd:element name="block_declarative_items_ql" type="Declarative_Item_List"/>
         <xsd:element name="block_statements_ql" type="Statement_List"/>
         <xsd:element name="block_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="exit_statement" type="Exit_Statement"/>

   <xsd:complexType name="Exit_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="exit_loop_name_q" type="Expression_Class"/>
         <xsd:element name="exit_condition_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="goto_statement" type="Goto_Statement"/>

   <xsd:complexType name="Goto_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="goto_label_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="procedure_call_statement" type="Procedure_Call_Statement"/>

   <xsd:complexType name="Procedure_Call_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="called_name_q" type="Expression_Class"/>
         <xsd:element name="call_statement_parameters_ql" type="Association_List"/>
         <xsd:element name="is_prefix_notation_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="is_prefix_notation" type="Is_Prefix_Notation"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="return_statement" type="Return_Statement"/>

   <xsd:complexType name="Return_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="return_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="extended_return_statement" type="Extended_Return_Statement"/>

   <xsd:complexType name="Extended_Return_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="return_object_declaration_q" type="Declaration_Class"/>
         <xsd:element name="extended_return_statements_ql" type="Statement_List"/>
         <xsd:element name="extended_return_exception_handlers_ql" type="Exception_Handler_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="accept_statement" type="Accept_Statement"/>

   <xsd:complexType name="Accept_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="accept_entry_direct_name_q" type="Name_Class"/>
         <xsd:element name="accept_entry_index_q" type="Expression_Class"/>
         <xsd:element name="accept_parameters_ql" type="Parameter_Specification_List"/>
         <xsd:element name="accept_body_statements_ql" type="Statement_List"/>
         <xsd:element name="accept_body_exception_handlers_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="entry_call_statement" type="Entry_Call_Statement"/>

   <xsd:complexType name="Entry_Call_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="called_name_q" type="Expression_Class"/>
         <xsd:element name="call_statement_parameters_ql" type="Association_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="requeue_statement" type="Requeue_Statement"/>

   <xsd:complexType name="Requeue_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="requeue_entry_name_q" type="Name_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="requeue_statement_with_abort" type="Requeue_Statement_With_Abort"/>

   <xsd:complexType name="Requeue_Statement_With_Abort">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="requeue_entry_name_q" type="Name_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="delay_until_statement" type="Delay_Until_Statement"/>

   <xsd:complexType name="Delay_Until_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="delay_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="delay_relative_statement" type="Delay_Relative_Statement"/>

   <xsd:complexType name="Delay_Relative_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="delay_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="terminate_alternative_statement" type="Terminate_Alternative_Statement"/>

   <xsd:complexType name="Terminate_Alternative_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="selective_accept_statement" type="Selective_Accept_Statement"/>

   <xsd:complexType name="Selective_Accept_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_paths_ql" type="Path_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="timed_entry_call_statement" type="Timed_Entry_Call_Statement"/>

   <xsd:complexType name="Timed_Entry_Call_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_paths_ql" type="Path_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="conditional_entry_call_statement" type="Conditional_Entry_Call_Statement"/>

   <xsd:complexType name="Conditional_Entry_Call_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_paths_ql" type="Path_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="asynchronous_select_statement" type="Asynchronous_Select_Statement"/>

   <xsd:complexType name="Asynchronous_Select_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="statement_paths_ql" type="Path_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="abort_statement" type="Abort_Statement"/>

   <xsd:complexType name="Abort_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="aborted_tasks_ql" type="Expression_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="raise_statement" type="Raise_Statement"/>

   <xsd:complexType name="Raise_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="raised_exception_q" type="Expression_Class"/>
         <xsd:element name="associated_message_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="code_statement" type="Code_Statement"/>

   <xsd:complexType name="Code_Statement">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="label_names_ql" type="Defining_Name_List"/>
         <xsd:element name="qualified_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="if_path" type="If_Path"/>

   <xsd:complexType name="If_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="condition_expression_q" type="Expression_Class"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="elsif_path" type="Elsif_Path"/>

   <xsd:complexType name="Elsif_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="condition_expression_q" type="Expression_Class"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="else_path" type="Else_Path"/>

   <xsd:complexType name="Else_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="case_path" type="Case_Path"/>

   <xsd:complexType name="Case_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="case_path_alternative_choices_ql" type="Element_List"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="select_path" type="Select_Path"/>

   <xsd:complexType name="Select_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="guard_q" type="Expression_Class"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="or_path" type="Or_Path"/>

   <xsd:complexType name="Or_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="guard_q" type="Expression_Class"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="then_abort_path" type="Then_Abort_Path"/>

   <xsd:complexType name="Then_Abort_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="sequence_of_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="case_expression_path" type="Case_Expression_Path"/>

   <xsd:complexType name="Case_Expression_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="case_path_alternative_choices_ql" type="Element_List"/>
         <xsd:element name="dependent_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="if_expression_path" type="If_Expression_Path"/>

   <xsd:complexType name="If_Expression_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="condition_expression_q" type="Expression_Class"/>
         <xsd:element name="dependent_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="elsif_expression_path" type="Elsif_Expression_Path"/>

   <xsd:complexType name="Elsif_Expression_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="condition_expression_q" type="Expression_Class"/>
         <xsd:element name="dependent_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="else_expression_path" type="Else_Expression_Path"/>

   <xsd:complexType name="Else_Expression_Path">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="dependent_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="use_package_clause" type="Use_Package_Clause"/>

   <xsd:complexType name="Use_Package_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="clause_names_ql" type="Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="use_type_clause" type="Use_Type_Clause"/>

   <xsd:complexType name="Use_Type_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="clause_names_ql" type="Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="use_all_type_clause" type="Use_All_Type_Clause"/>

   <xsd:complexType name="Use_All_Type_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="clause_names_ql" type="Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="with_clause" type="With_Clause"/>

   <xsd:complexType name="With_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="has_limited_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="limited" type="Limited"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="has_private_q">
            <xsd:complexType>
               <xsd:choice>
                  <xsd:element name="private" type="Private"/>
                  <xsd:element name="not_an_element" type="Not_An_Element"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="clause_names_ql" type="Name_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="attribute_definition_clause" type="Attribute_Definition_Clause"/>

   <xsd:complexType name="Attribute_Definition_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="representation_clause_name_q" type="Name_Class"/>
         <xsd:element name="representation_clause_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="enumeration_representation_clause" type="Enumeration_Representation_Clause"/>

   <xsd:complexType name="Enumeration_Representation_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="representation_clause_name_q" type="Name_Class"/>
         <xsd:element name="representation_clause_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="record_representation_clause" type="Record_Representation_Clause"/>

   <xsd:complexType name="Record_Representation_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="representation_clause_name_q" type="Name_Class"/>
         <xsd:element name="mod_clause_expression_q" type="Expression_Class"/>
         <xsd:element name="component_clauses_ql" type="Component_Clause_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="at_clause" type="At_Clause"/>

   <xsd:complexType name="At_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="representation_clause_name_q" type="Name_Class"/>
         <xsd:element name="representation_clause_expression_q" type="Expression_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="component_clause" type="Component_Clause"/>

   <xsd:complexType name="Component_Clause">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="representation_clause_name_q" type="Name_Class"/>
         <xsd:element name="component_clause_position_q" type="Expression_Class"/>
         <xsd:element name="component_clause_range_q" type="Discrete_Range_Class"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="exception_handler" type="Exception_Handler"/>

   <xsd:complexType name="Exception_Handler">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
         <xsd:element name="choice_parameter_specification_q" type="Declaration_Class"/>
         <xsd:element name="exception_choices_ql" type="Element_List"/>
         <xsd:element name="handler_statements_ql" type="Statement_List"/>
      </xsd:sequence>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="comment" type="Comment"/>

   <xsd:complexType name="Comment">
      <xsd:sequence>
         <xsd:element name="sloc" type="Source_Location"/>
      </xsd:sequence>
      <xsd:attribute name="text" type="xsd:string" use="required"/>
      <xsd:attribute name="checks" type="xsd:string"/>
   </xsd:complexType>

</xsd:schema>
