================================================================================
access types
================================================================================

package P is
   type A is access Integer;
   type B is access not null Integer;
   type C is access constant Integer;
   type D is access all Integer;
   type E is access function return Boolean;
   type F is access protected function return Boolean;
end;

--------------------------------------------------------------------------------

(compilation
  (compilation_unit
    (package_declaration
      (identifier)
      (full_type_declaration
        (identifier)
        (access_to_object_definition
          (identifier)))
      (full_type_declaration
        (identifier)
        (access_to_object_definition
          (null_exclusion)
          (identifier)))
      (full_type_declaration
        (identifier)
        (access_to_object_definition
          (general_access_modifier)
          (identifier)))
      (full_type_declaration
        (identifier)
        (access_to_object_definition
          (general_access_modifier)
          (identifier)))
      (full_type_declaration
        (identifier)
        (access_to_subprogram_definition
          (result_profile
            (identifier))))
      (full_type_declaration
        (identifier)
        (access_to_subprogram_definition
          (result_profile
            (identifier)))))))

================================================================================
Dereference
================================================================================

procedure P is
begin
   A := Acc.all;
   Proc.all (1);
end;

--------------------------------------------------------------------------------

(compilation
  (compilation_unit
    (subprogram_body
      (procedure_specification
        (identifier))
      (handled_sequence_of_statements
        (assignment_statement
          (identifier)
          (expression
            (term
              (selected_component
                (identifier)
                (identifier)))))
        (procedure_call_statement
          (selected_component
            (identifier)
            (identifier))
          (actual_parameter_part
            (parameter_association
              (expression
                (term
                  (numeric_literal))))))))))
