JetFile: SoftKeywords.jet
  NAMESPACE
    PsiElement(namespace)('namespace')
    PsiWhiteSpace(' ')
    NAMESPACE_NAME
      PsiElement(IDENTIFIER)('foo')
      PsiElement(DOT)('.')
      PsiElement(IDENTIFIER)('bar')
      PsiElement(DOT)('.')
      PsiElement(IDENTIFIER)('goo')
    PsiWhiteSpace('\n\n')
    IMPORT_DIRECTIVE
      PsiElement(import)('import')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('foo')
    PsiWhiteSpace('\n\n')
    CLASS
      MODIFIER_LIST
        PsiElement(public)('public')
        PsiWhiteSpace(' ')
        PsiElement(protected)('protected')
        PsiWhiteSpace(' ')
        PsiElement(private)('private')
        PsiWhiteSpace(' ')
        PsiElement(internal)('internal')
        PsiWhiteSpace('\n')
        PsiElement(abstract)('abstract')
        PsiWhiteSpace('\n')
        PsiElement(virtual)('virtual')
        PsiWhiteSpace('\n')
        PsiElement(enum)('enum')
        PsiWhiteSpace('\n')
        PsiElement(open)('open')
        PsiWhiteSpace('\n')
        PsiElement(attribute)('attribute')
        PsiWhiteSpace('\n')
        PsiElement(override)('override')
        PsiWhiteSpace('\n')
        PsiElement(virtual)('virtual')
        PsiWhiteSpace('\n')
        PsiElement(abstract)('abstract')
        PsiWhiteSpace('\n')
        PsiElement(private)('private')
        PsiWhiteSpace('\n')
        PsiElement(protected)('protected')
        PsiWhiteSpace('\n')
        PsiElement(public)('public')
        PsiWhiteSpace('\n')
        PsiElement(internal)('internal')
        PsiWhiteSpace('\n')
        PsiElement(lazy)('lazy')
        PsiWhiteSpace('\n')
        PsiElement(in)('in')
        PsiWhiteSpace('\n')
        PsiElement(out)('out')
        PsiWhiteSpace('\n')
        PsiElement(ref)('ref')
      PsiWhiteSpace('\n ')
      PsiElement(class)('class')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('Bar')
      TYPE_PARAMETER_LIST
        PsiElement(LT)('<')
        TYPE_PARAMETER
          PsiElement(IDENTIFIER)('abstract')
        PsiElement(COMMA)(',')
        PsiWhiteSpace(' ')
        TYPE_PARAMETER
          MODIFIER_LIST
            PsiElement(abstract)('abstract')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('enum')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('T')
        PsiElement(COMMA)(',')
        PsiWhiteSpace(' ')
        TYPE_PARAMETER
          MODIFIER_LIST
            PsiElement(lazy)('lazy')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('virtual')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n    ')
        TYPE_PARAMETER
          MODIFIER_LIST
            PsiElement(public)('public')
            PsiWhiteSpace(' ')
            PsiElement(protected)('protected')
            PsiWhiteSpace(' ')
            PsiElement(private)('private')
            PsiWhiteSpace(' ')
            PsiElement(internal)('internal')
            PsiWhiteSpace(' ')
            PsiElement(abstract)('abstract')
            PsiWhiteSpace('\n    ')
            PsiElement(virtual)('virtual')
            PsiWhiteSpace('\n    ')
            PsiElement(enum)('enum')
            PsiWhiteSpace('\n    ')
            PsiElement(open)('open')
            PsiWhiteSpace('\n    ')
            PsiElement(attribute)('attribute')
            PsiWhiteSpace('\n    ')
            PsiElement(override)('override')
            PsiWhiteSpace('\n    ')
            PsiElement(virtual)('virtual')
            PsiWhiteSpace('\n    ')
            PsiElement(abstract)('abstract')
            PsiWhiteSpace('\n    ')
            PsiElement(private)('private')
            PsiWhiteSpace('\n    ')
            PsiElement(protected)('protected')
            PsiWhiteSpace('\n    ')
            PsiElement(public)('public')
            PsiWhiteSpace('\n    ')
            PsiElement(internal)('internal')
            PsiWhiteSpace('\n    ')
            PsiElement(lazy)('lazy')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('open')
        PsiWhiteSpace('\n ')
        PsiElement(GT)('>')
      PsiWhiteSpace(' ')
      PsiElement(wraps)('wraps')
      PsiWhiteSpace(' ')
      PRIMARY_CONSTRUCTOR_PARAMETERS_LIST
        PsiElement(LPAR)('(')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('B')
        PsiElement(RPAR)(')')
      PsiWhiteSpace(' ')
      PsiElement(COLON)(':')
      PsiWhiteSpace(' ')
      DELEGATION_SPECIFIER_LIST
        DELEGATOR_BY
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('A')
          PsiWhiteSpace(' ')
          PsiElement(by)('by')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace(' ')
      CLASS_BODY
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n    ')
        PROPERTY
          MODIFIER_LIST
            PsiElement(public)('public')
            PsiWhiteSpace(' ')
            PsiElement(protected)('protected')
            PsiWhiteSpace(' ')
            PsiElement(private)('private')
            PsiWhiteSpace(' ')
            PsiElement(internal)('internal')
          PsiWhiteSpace(' ')
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('abstract')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('virtual')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('enum')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('open')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('attribute')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('override')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('virtual')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('abstract')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('private')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('protected')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('public')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('internal')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('lazy')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('wraps')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('import')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('where')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('by')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('get')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('set')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('public')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('private')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('protected')
        PsiWhiteSpace('\n    ')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('internal')
          PsiWhiteSpace('\n      ')
          PROPERTY_ACCESSOR
            PsiElement(get)('get')
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
            PsiWhiteSpace(' ')
            PsiElement(EQ)('=')
            PsiWhiteSpace(' ')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace('\n      ')
          PROPERTY_ACCESSOR
            PsiElement(set)('set')
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('S')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('s')
            PsiElement(RPAR)(')')
            PsiWhiteSpace(' ')
            BLOCK
              PsiElement(LBRACE)('{')
              PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n\n\n    ')
        FUN
          MODIFIER_LIST
            PsiElement(public)('public')
            PsiWhiteSpace(' ')
            PsiElement(protected)('protected')
            PsiWhiteSpace(' ')
            PsiElement(private)('private')
            PsiWhiteSpace(' ')
            PsiElement(internal)('internal')
          PsiWhiteSpace('\n    ')
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('abstract')
          PsiWhiteSpace('  ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('abstract')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('virtual')
          PsiWhiteSpace('   ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('virtual')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('enum')
          PsiWhiteSpace('      ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('enum')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('open')
          PsiWhiteSpace('      ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('open')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('attribute')
          PsiWhiteSpace(' ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('attribute')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('override')
          PsiWhiteSpace('  ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('override')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('virtual')
          PsiWhiteSpace('   ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('virtual')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('abstract')
          PsiWhiteSpace('  ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('abstract')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('private')
          PsiWhiteSpace('   ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('private')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('protected')
          PsiWhiteSpace(' ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('protected')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('public')
          PsiWhiteSpace('    ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('public')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('internal')
          PsiWhiteSpace('  ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('internal')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('lazy')
          PsiWhiteSpace('      ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('lazy')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('wraps')
          PsiWhiteSpace('     ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('wraps')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('import')
          PsiWhiteSpace('    ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('import')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('where')
          PsiWhiteSpace('     ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('where')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('by')
          PsiWhiteSpace('        ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('by')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('get')
          PsiWhiteSpace('       ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('get')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('set')
          PsiWhiteSpace('       ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('set')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('public')
          PsiWhiteSpace('    ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('public')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('private')
          PsiWhiteSpace('   ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('private')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('protected')
          PsiWhiteSpace(' ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('protected')
        PsiWhiteSpace('\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('internal')
          PsiWhiteSpace('  ')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('internal')
        PsiWhiteSpace('\n\n    ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('test')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('abstract')
              PsiWhiteSpace('  ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('virtual')
              PsiWhiteSpace('   ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('enum')
              PsiWhiteSpace('      ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('open')
              PsiWhiteSpace('      ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('attribute')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('override')
              PsiWhiteSpace('  ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('virtual')
              PsiWhiteSpace('   ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('abstract')
              PsiWhiteSpace('  ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('private')
              PsiWhiteSpace('   ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('protected')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('public')
              PsiWhiteSpace('    ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('internal')
              PsiWhiteSpace('  ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('lazy')
              PsiWhiteSpace('      ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('wraps')
              PsiWhiteSpace('     ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('import')
              PsiWhiteSpace('    ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('where')
              PsiWhiteSpace('     ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('by')
              PsiWhiteSpace('        ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('get')
              PsiWhiteSpace('       ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('set')
              PsiWhiteSpace('       ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('public')
              PsiWhiteSpace('    ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('private')
              PsiWhiteSpace('   ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('protected')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n        ')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('internal')
              PsiWhiteSpace('  ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiElement(COMMA)(',')
            PsiWhiteSpace('\n    ')
            VALUE_PARAMETER
              MODIFIER_LIST
                PsiElement(public)('public')
                PsiWhiteSpace(' ')
                PsiElement(protected)('protected')
                PsiWhiteSpace(' ')
                PsiElement(private)('private')
                PsiWhiteSpace(' ')
                PsiElement(internal)('internal')
                PsiWhiteSpace(' ')
                PsiElement(abstract)('abstract')
                PsiWhiteSpace('\n    ')
                PsiElement(virtual)('virtual')
                PsiWhiteSpace('\n    ')
                PsiElement(enum)('enum')
                PsiWhiteSpace('\n    ')
                PsiElement(open)('open')
                PsiWhiteSpace('\n    ')
                PsiElement(attribute)('attribute')
                PsiWhiteSpace('\n    ')
                PsiElement(override)('override')
                PsiWhiteSpace('\n    ')
                PsiElement(virtual)('virtual')
                PsiWhiteSpace('\n    ')
                PsiElement(abstract)('abstract')
                PsiWhiteSpace('\n    ')
                PsiElement(private)('private')
                PsiWhiteSpace('\n    ')
                PsiElement(protected)('protected')
                PsiWhiteSpace('\n    ')
                PsiElement(public)('public')
                PsiWhiteSpace('\n    ')
                PsiElement(internal)('internal')
                PsiWhiteSpace('\n    ')
                PsiElement(lazy)('lazy')
              PsiWhiteSpace(' ')
              PsiElement(IDENTIFIER)('open')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  PsiElement(IDENTIFIER)('t')
            PsiWhiteSpace('\n\n     ')
            PsiElement(RPAR)(')')
        PsiWhiteSpace('\n\n')
        PsiElement(RBRACE)('}')
    PsiWhiteSpace('\n\n\n')
    CLASS
      PsiElement(class)('class')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('F')
      TYPE_PARAMETER_LIST
        <empty list>
      PRIMARY_CONSTRUCTOR_PARAMETERS_LIST
        PsiElement(LPAR)('(')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('foo')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('bar')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('abstract')
          PsiWhiteSpace('  ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('virtual')
          PsiWhiteSpace('   ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('enum')
          PsiWhiteSpace('      ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('open')
          PsiWhiteSpace('      ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('attribute')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('override')
          PsiWhiteSpace('  ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('virtual')
          PsiWhiteSpace('   ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('abstract')
          PsiWhiteSpace('  ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('private')
          PsiWhiteSpace('   ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('protected')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('public')
          PsiWhiteSpace('    ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('internal')
          PsiWhiteSpace('  ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('lazy')
          PsiWhiteSpace('      ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('wraps')
          PsiWhiteSpace('     ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('import')
          PsiWhiteSpace('    ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('where')
          PsiWhiteSpace('     ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('by')
          PsiWhiteSpace('        ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('get')
          PsiWhiteSpace('       ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('set')
          PsiWhiteSpace('       ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('public')
          PsiWhiteSpace('    ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('private')
          PsiWhiteSpace('   ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('protected')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n        ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          PsiElement(IDENTIFIER)('internal')
          PsiWhiteSpace('  ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('t')
        PsiElement(COMMA)(',')
        PsiWhiteSpace('\n    ')
        PRIMARY_CONSTRUCTOR_PARAMETER
          MODIFIER_LIST
            PsiElement(public)('public')
            PsiWhiteSpace(' ')
            PsiElement(protected)('protected')
            PsiWhiteSpace(' ')
            PsiElement(private)('private')
            PsiWhiteSpace(' ')
            PsiElement(internal)('internal')
            PsiWhiteSpace(' ')
            PsiElement(abstract)('abstract')
            PsiWhiteSpace('\n    ')
            PsiElement(virtual)('virtual')
            PsiWhiteSpace('\n    ')
            PsiElement(enum)('enum')
            PsiWhiteSpace('\n    ')
            PsiElement(open)('open')
            PsiWhiteSpace('\n    ')
            PsiElement(attribute)('attribute')
            PsiWhiteSpace('\n    ')
            PsiElement(override)('override')
            PsiWhiteSpace('\n    ')
            PsiElement(virtual)('virtual')
            PsiWhiteSpace('\n    ')
            PsiElement(abstract)('abstract')
            PsiWhiteSpace('\n    ')
            PsiElement(private)('private')
            PsiWhiteSpace('\n    ')
            PsiElement(protected)('protected')
            PsiWhiteSpace('\n    ')
            PsiElement(public)('public')
            PsiWhiteSpace('\n    ')
            PsiElement(internal)('internal')
            PsiWhiteSpace('\n    ')
            PsiElement(lazy)('lazy')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('open')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              PsiElement(IDENTIFIER)('b')
        PsiWhiteSpace('\n')
        PsiElement(RPAR)(')')
      PsiWhiteSpace(' ')
      CLASS_BODY
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n\n')
        PsiElement(RBRACE)('}')