================================================================================
Simple Interface Type
================================================================================

codeunit 50100 TestInterface
{
    procedure GetAuth(): Interface "Storage Service Authorization"
    begin
    end;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    (integer)
    (identifier)
    (procedure
      (procedure_keyword)
      (identifier)
      (type_specification
        (object_reference_type
          (interface_keyword)
          (quoted_identifier)))
      (code_block))))

================================================================================
Namespace-Qualified Interface Type
================================================================================

codeunit 50100 TestInterface
{
    procedure GetAuth(): Interface System.Azure.Storage."Storage Service Authorization"
    begin
    end;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    (integer)
    (identifier)
    (procedure
      (procedure_keyword)
      (identifier)
      (type_specification
        (object_reference_type
          (interface_keyword)
          (identifier)
          (identifier)
          (identifier)
          (quoted_identifier)))
      (code_block))))

================================================================================
Interface Type in Variable Declaration
================================================================================

codeunit 50100 TestInterface
{
    var
        Auth: Interface "My Interface";
        ComplexAuth: Interface Microsoft.System."Complex Interface";
        
    procedure Test();
    begin
    end;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    (integer)
    (identifier)
    (var_section
      (var_keyword)
      (variable_declaration
        (identifier)
        (type_specification
          (object_reference_type
            (interface_keyword)
            (quoted_identifier))))
      (variable_declaration
        (identifier)
        (type_specification
          (object_reference_type
            (interface_keyword)
            (identifier)
            (identifier)
            (quoted_identifier)))))
    (procedure
      (procedure_keyword)
      (identifier)
      (code_block))))

================================================================================
Interface Type in Parameter
================================================================================

codeunit 50100 TestInterface
{
    procedure Process(Auth: Interface System.Security."Auth Provider"; Value: Integer)
    begin
    end;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    (integer)
    (identifier)
    (procedure
      (procedure_keyword)
      (identifier)
      (parameter_list
        (parameter
          (identifier)
          (type_specification
            (object_reference_type
              (interface_keyword)
              (identifier)
              (identifier)
              (quoted_identifier))))
        (parameter
          (identifier)
          (type_specification
            (basic_type))))
      (code_block))))
