================================================================================
SecretText type declaration
================================================================================

codeunit 50100 "Secret Handler"
{
    procedure GetSecret()
    var
        Token: SecretText;
    begin
        Token := GetAuthToken();
    end;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    object_id: (integer)
    object_name: (quoted_identifier)
    (procedure
      (procedure_keyword)
      name: (identifier)
      (var_section
        (var_keyword)
        (variable_declaration
          name: (identifier)
          type: (type_specification
            (basic_type))))
      (code_block
        (assignment_statement
          left: (identifier)
          right: (call_expression
            function: (identifier)
            arguments: (argument_list)))))))

================================================================================
SecretText case variations
================================================================================

codeunit 50200 "Token Manager"
{
    var
        MySecret: secrettext;
        AnotherSecret: SECRETTEXT;
        ThirdSecret: SecretText;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    object_id: (integer)
    object_name: (quoted_identifier)
    (var_section
      (var_keyword)
      (variable_declaration
        name: (identifier)
        type: (type_specification
          (basic_type)))
      (variable_declaration
        name: (identifier)
        type: (type_specification
          (basic_type)))
      (variable_declaration
        name: (identifier)
        type: (type_specification
          (basic_type))))))

================================================================================
SecretText with methods
================================================================================

codeunit 50300 "Auth Handler"
{
    procedure ProcessToken(Token: SecretText): Boolean
    var
        IsValid: Boolean;
    begin
        if Token.IsEmpty() then
            exit(false);
        
        IsValid := ValidateToken(Token);
        exit(IsValid);
    end;
}

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

(source_file
  (codeunit_declaration
    (codeunit_keyword)
    object_id: (integer)
    object_name: (quoted_identifier)
    (procedure
      (procedure_keyword)
      name: (identifier)
      (parameter_list
        (parameter
          name: (identifier)
          type: (type_specification
            (basic_type))))
      return_type: (type_specification
        (basic_type))
      (var_section
        (var_keyword)
        (variable_declaration
          name: (identifier)
          type: (type_specification
            (basic_type))))
      (code_block
        (if_statement
          (if_keyword)
          condition: (call_expression
            function: (member_expression
              object: (identifier)
              member: (identifier))
            arguments: (argument_list))
          (then_keyword)
          then_branch: (exit_statement
            (exit_keyword)
            return_value: (boolean)))
        (assignment_statement
          left: (identifier)
          right: (call_expression
            function: (identifier)
            arguments: (argument_list
              (identifier))))
        (exit_statement
          (exit_keyword)
          return_value: (identifier))))))
