KtFile: annotations.kt
  PACKAGE_DIRECTIVE
    <empty list>
  IMPORT_LIST
    <empty list>
  CLASS
    MODIFIER_LIST
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
      PsiWhiteSpace(' ')
      PsiElement(public)('public')
    PsiWhiteSpace(' ')
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('Annotations')
    PsiWhiteSpace(' ')
    PRIMARY_CONSTRUCTOR
      MODIFIER_LIST
        PsiElement(private)('private')
        PsiWhiteSpace(' ')
        ANNOTATION_ENTRY
          PsiElement(AT)('@')
          CONSTRUCTOR_CALLEE
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
      PsiWhiteSpace(' ')
      PsiElement(constructor)('constructor')
      VALUE_PARAMETER_LIST
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          MODIFIER_LIST
            PsiElement(private)('private')
            PsiWhiteSpace(' ')
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              ANNOTATION_TARGET
                PsiElement(property)('property')
              PsiElement(COLON)(':')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              ANNOTATION_TARGET
                PsiElement(param)('param')
              PsiElement(COLON)(':')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('c1')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Int')
        PsiElement(COMMA)(',')
        PsiWhiteSpace(' ')
        VALUE_PARAMETER
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              ANNOTATION_TARGET
                PsiElement(property)('property')
              PsiElement(COLON)(':')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              ANNOTATION_TARGET
                PsiElement(param)('param')
              PsiElement(COLON)(':')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('c2')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Int')
        PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    CLASS_BODY
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
            VALUE_ARGUMENT_LIST
              PsiElement(LPAR)('(')
              PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('hasValueArguments')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('42')
      PsiWhiteSpace('\n\n    ')
      FUN
        MODIFIER_LIST
          PsiElement(protected)('protected')
          PsiWhiteSpace(' ')
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('f')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n    ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FUN
        MODIFIER_LIST
          PsiElement(inline)('inline')
        PsiWhiteSpace(' ')
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        TYPE_PARAMETER_LIST
          PsiElement(LT)('<')
          TYPE_PARAMETER
            MODIFIER_LIST
              PsiElement(reified)('reified')
              PsiWhiteSpace(' ')
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('T')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          TYPE_PARAMETER
            MODIFIER_LIST
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('F')
          PsiElement(GT)('>')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('inlineFun')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace(' ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FUN
        MODIFIER_LIST
          PsiElement(private)('private')
        PsiWhiteSpace(' ')
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('annotationWithVararg')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          VALUE_PARAMETER
            MODIFIER_LIST
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace(' ')
              PsiElement(vararg)('vararg')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('i')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('Int')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('b')
            VALUE_ARGUMENT_LIST
              PsiElement(LPAR)('(')
              VALUE_ARGUMENT
                DOT_QUALIFIED_EXPRESSION
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('E')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('E1')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(private)('private')
        PsiWhiteSpace(' ')
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('c')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('1')
      PsiWhiteSpace('\n\n    ')
      FUN
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('b')
            VALUE_ARGUMENT_LIST
              PsiElement(LPAR)('(')
              VALUE_ARGUMENT
                DOT_QUALIFIED_EXPRESSION
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('E')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('E2')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(public)('public')
        PsiWhiteSpace(' ')
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('g')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          VALUE_PARAMETER
            MODIFIER_LIST
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('p1')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('E')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n    ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        PsiElement(var)('var')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('withCustomAccessors')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('0')
        PsiWhiteSpace('\n    ')
        PROPERTY_ACCESSOR
          PsiComment(EOL_COMMENT)('//TODO: accessor modifiers are lost')
          PsiWhiteSpace('\n        ')
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(get)('get')
        PsiWhiteSpace('\n        ')
        PROPERTY_ACCESSOR
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            PsiElement(private)('private')
          PsiWhiteSpace(' ')
          PsiElement(set)('set')
      PsiWhiteSpace('\n\n\n    ')
      OBJECT_DECLARATION
        MODIFIER_LIST
          PsiElement(private)('private')
          PsiWhiteSpace(' ')
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('b')
            VALUE_ARGUMENT_LIST
              PsiElement(LPAR)('(')
              VALUE_ARGUMENT
                DOT_QUALIFIED_EXPRESSION
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('E')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('E2')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(companion)('companion')
        PsiWhiteSpace(' ')
        PsiElement(object)('object')
        PsiWhiteSpace(' ')
        CLASS_BODY
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n        ')
          PROPERTY
            MODIFIER_LIST
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('f')
            PsiWhiteSpace(' ')
            PsiElement(val)('val')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('field')
            PsiWhiteSpace(' ')
            PsiElement(EQ)('=')
            PsiWhiteSpace(' ')
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('42')
          PsiWhiteSpace('\n    ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      CLASS
        PsiElement(class)('class')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('Nested')
        PsiWhiteSpace(' ')
        PRIMARY_CONSTRUCTOR
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            PsiElement(private)('private')
            PsiWhiteSpace(' ')
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('b')
              VALUE_ARGUMENT_LIST
                PsiElement(LPAR)('(')
                VALUE_ARGUMENT
                  DOT_QUALIFIED_EXPRESSION
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('E')
                    PsiElement(DOT)('.')
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('E1')
                PsiElement(RPAR)(')')
            PsiWhiteSpace(' ')
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('b')
              VALUE_ARGUMENT_LIST
                PsiElement(LPAR)('(')
                VALUE_ARGUMENT
                  DOT_QUALIFIED_EXPRESSION
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('E')
                    PsiElement(DOT)('.')
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('E2')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(constructor)('constructor')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
      PsiWhiteSpace('\n\n    ')
      CLASS
        MODIFIER_LIST
          PsiElement(enum)('enum')
        PsiWhiteSpace(' ')
        PsiElement(class)('class')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('En')
        PsiWhiteSpace(' ')
        CLASS_BODY
          PsiElement(LBRACE)('{')
          PsiWhiteSpace(' ')
          ENUM_ENTRY
            PsiElement(IDENTIFIER)('Entry1')
            PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          ENUM_ENTRY
            MODIFIER_LIST
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace(' ')
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('b')
                VALUE_ARGUMENT_LIST
                  PsiElement(LPAR)('(')
                  VALUE_ARGUMENT
                    DOT_QUALIFIED_EXPRESSION
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('E')
                      PsiElement(DOT)('.')
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('E2')
                  PsiElement(RPAR)(')')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('Entry2')
            PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          ENUM_ENTRY
            MODIFIER_LIST
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace(' ')
              ANNOTATION_ENTRY
                PsiElement(AT)('@')
                CONSTRUCTOR_CALLEE
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('c')
            PsiWhiteSpace(' ')
            PsiElement(IDENTIFIER)('Entry3')
          PsiWhiteSpace(' ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FUN
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('types')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          VALUE_PARAMETER
            PsiElement(IDENTIFIER)('param')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            TYPE_REFERENCE
              MODIFIER_LIST
                ANNOTATION_ENTRY
                  PsiElement(AT)('@')
                  CONSTRUCTOR_CALLEE
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiWhiteSpace(' ')
                ANNOTATION_ENTRY
                  PsiElement(AT)('@')
                  CONSTRUCTOR_CALLEE
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                  VALUE_ARGUMENT_LIST
                    PsiElement(LPAR)('(')
                    VALUE_ARGUMENT
                      DOT_QUALIFIED_EXPRESSION
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('E')
                        PsiElement(DOT)('.')
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('E1')
                    PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('LongRange')
          PsiElement(RPAR)(')')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('b')
              VALUE_ARGUMENT_LIST
                PsiElement(LPAR)('(')
                VALUE_ARGUMENT
                  DOT_QUALIFIED_EXPRESSION
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('E')
                    PsiElement(DOT)('.')
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('E2')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Unit')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FUN
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              ANNOTATION_TARGET
                PsiElement(receiver)('receiver')
              PsiElement(COLON)(':')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
        PsiElement(DOT)('.')
        PsiElement(IDENTIFIER)('foo')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n    ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          MODIFIER_LIST
            ANNOTATION_ENTRY
              PsiElement(AT)('@')
              ANNOTATION_TARGET
                PsiElement(receiver)('receiver')
              PsiElement(COLON)(':')
              CONSTRUCTOR_CALLEE
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
        PsiElement(DOT)('.')
        PsiElement(IDENTIFIER)('receiverField')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          NULLABLE_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('String')
            PsiElement(QUEST)('?')
        PsiWhiteSpace(' ')
        PROPERTY_ACCESSOR
          PsiElement(get)('get')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(EQ)('=')
          PsiWhiteSpace(' ')
          NULL
            PsiElement(null)('null')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            ANNOTATION_TARGET
              PsiElement(get)('get')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace('\n    ')
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('getterField')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          NULLABLE_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('String')
            PsiElement(QUEST)('?')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        NULL
          PsiElement(null)('null')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            ANNOTATION_TARGET
              PsiElement(set)('set')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace('\n    ')
        PsiElement(var)('var')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('setterField')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          NULLABLE_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('String')
            PsiElement(QUEST)('?')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        NULL
          PsiElement(null)('null')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            ANNOTATION_TARGET
              PsiElement(field)('field')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace('\n    ')
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('ownField')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          NULLABLE_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('String')
            PsiElement(QUEST)('?')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        NULL
          PsiElement(null)('null')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            ANNOTATION_TARGET
              PsiElement(setparam)('setparam')
            PsiElement(COLON)(':')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace('\n    ')
        PsiElement(var)('var')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('setParam')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          NULLABLE_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('String')
            PsiElement(QUEST)('?')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        NULL
          PsiElement(null)('null')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        MODIFIER_LIST
          ANNOTATION_ENTRY
            PsiElement(AT)('@')
            ANNOTATION_TARGET
              PsiElement(delegate)('delegate')
            PsiElement(COLON)(':')
            CONSTRUCTOR_CALLEE
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace('\n    ')
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('deleage')
        PsiWhiteSpace(' ')
        PROPERTY_DELEGATE
          PsiElement(by)('by')
          PsiWhiteSpace(' ')
          CALL_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('lazy')
            PsiWhiteSpace(' ')
            LAMBDA_ARGUMENT
              LAMBDA_EXPRESSION
                FUNCTION_LITERAL
                  PsiElement(LBRACE)('{')
                  PsiWhiteSpace(' ')
                  BLOCK
                    INTEGER_CONSTANT
                      PsiElement(INTEGER_LITERAL)('12')
                  PsiWhiteSpace(' ')
                  PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      CLASS
        PsiElement(class)('class')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('ClassWithConstructor')
        PRIMARY_CONSTRUCTOR
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              MODIFIER_LIST
                ANNOTATION_ENTRY
                  PsiElement(AT)('@')
                  ANNOTATION_TARGET
                    PsiElement(param)('param')
                  PsiElement(COLON)(':')
                  PsiWhiteSpace(' ')
                  CONSTRUCTOR_CALLEE
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace(' ')
              PsiElement(val)('val')
              PsiWhiteSpace(' ')
              PsiElement(IDENTIFIER)('b')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Int')
            PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')
  PsiWhiteSpace('\n\n')
  CLASS
    MODIFIER_LIST
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Target')
        VALUE_ARGUMENT_LIST
          PsiElement(LPAR)('(')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('VALUE_PARAMETER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('FUNCTION')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n        ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('CONSTRUCTOR')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY_GETTER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY_SETTER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n        ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('TYPE')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('CLASS')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('TYPE_PARAMETER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('FIELD')
          PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      PsiElement(annotation)('annotation')
    PsiWhiteSpace(' ')
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('a')
  PsiWhiteSpace('\n\n')
  CLASS
    MODIFIER_LIST
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Target')
        VALUE_ARGUMENT_LIST
          PsiElement(LPAR)('(')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('FUNCTION')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('CLASS')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n        ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('CONSTRUCTOR')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('TYPE')
          PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Retention')
        VALUE_ARGUMENT_LIST
          PsiElement(LPAR)('(')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationRetention')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('SOURCE')
          PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Repeatable')
      PsiWhiteSpace('\n')
      PsiElement(annotation)('annotation')
    PsiWhiteSpace(' ')
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('b')
    PRIMARY_CONSTRUCTOR
      VALUE_PARAMETER_LIST
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('e')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('E')
        PsiElement(RPAR)(')')
  PsiWhiteSpace('\n\n')
  CLASS
    MODIFIER_LIST
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Target')
        VALUE_ARGUMENT_LIST
          PsiElement(LPAR)('(')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('VALUE_PARAMETER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('FUNCTION')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n        ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('CONSTRUCTOR')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY_GETTER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('PROPERTY_SETTER')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n        ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('TYPE')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('CLASS')
          PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      PsiElement(annotation)('annotation')
    PsiWhiteSpace(' ')
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('c')
  PsiWhiteSpace('\n\n')
  CLASS
    MODIFIER_LIST
      ANNOTATION_ENTRY
        PsiElement(AT)('@')
        CONSTRUCTOR_CALLEE
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Target')
        VALUE_ARGUMENT_LIST
          PsiElement(LPAR)('(')
          VALUE_ARGUMENT
            DOT_QUALIFIED_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('AnnotationTarget')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('FIELD')
          PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      PsiElement(annotation)('annotation')
    PsiWhiteSpace(' ')
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('f')
  PsiWhiteSpace('\n\n')
  CLASS
    MODIFIER_LIST
      PsiElement(enum)('enum')
    PsiWhiteSpace(' ')
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('E')
    PsiWhiteSpace(' ')
    CLASS_BODY
      PsiElement(LBRACE)('{')
      PsiWhiteSpace(' ')
      ENUM_ENTRY
        PsiElement(IDENTIFIER)('E1')
        PsiElement(COMMA)(',')
      PsiWhiteSpace(' ')
      ENUM_ENTRY
        PsiElement(IDENTIFIER)('E2')
      PsiWhiteSpace(' ')
      PsiElement(RBRACE)('}')