========================================================================
Phase 3: Attribute before preprocessor with procedure in codeunit
========================================================================

codeunit 50100 TestRustStyleAttribute
{
    [IntegrationEvent(false, false)]
    #if CLEAN25
    procedure MyEvent(Param: Integer)
    begin
    end;
    #endif
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    object_id: (integer)
    object_name: (identifier)
    (attribute_item
      attribute: (attribute_content
        name: (identifier)
        arguments: (attribute_arguments
          (attribute_argument_list
            (boolean)
            (boolean)))))
    (preproc_conditional
      (preproc_if
        condition: (identifier))
      (procedure
        (procedure_keyword)
        name: (identifier)
        (parameter_list
          (parameter
            name: (identifier)
            type: (type_specification
              (basic_type))))
        (code_block))
      (preproc_endif))))

========================================================================
Phase 3: Attribute before preprocessor with procedure in table extension
========================================================================

tableextension 50100 MyTableExt extends Customer
{
    [IntegrationEvent(false, false)]
    #if CLEAN25
    procedure OnCustomerModify()
    begin
    end;
    #endif
}

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

(source_file
  (tableextension_declaration
    (tableextension_keyword)
    object_id: (integer)
    object_name: (identifier)
    (extends_keyword)
    base_object: (identifier)
    (attribute_item
      attribute: (attribute_content
        name: (identifier)
        arguments: (attribute_arguments
          (attribute_argument_list
            (boolean)
            (boolean)))))
    (preproc_conditional
      (preproc_if
        condition: (identifier))
      (procedure
        (procedure_keyword)
        name: (identifier)
        (code_block))
      (preproc_endif))))

========================================================================
Phase 3: Multiple attributes before preprocessor
========================================================================

codeunit 50100 TestMultipleAttrs
{
    [Scope('OnPrem')]
    [IntegrationEvent(false, false)]
    #if CLEAN25
    procedure MyEvent()
    begin
    end;
    #endif
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    object_id: (integer)
    object_name: (identifier)
    (attribute_item
      attribute: (attribute_content
        name: (identifier)
        arguments: (attribute_arguments
          (attribute_argument_list
            (string_literal)))))
    (attribute_item
      attribute: (attribute_content
        name: (identifier)
        arguments: (attribute_arguments
          (attribute_argument_list
            (boolean)
            (boolean)))))
    (preproc_conditional
      (preproc_if
        condition: (identifier))
      (procedure
        (procedure_keyword)
        name: (identifier)
        (code_block))
      (preproc_endif))))
