JetFile: StringTemplates.kt
  PACKAGE_DIRECTIVE
    <empty list>
  IMPORT_LIST
    <empty list>
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('demo')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('abc')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('1')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        STRING_TEMPLATE
          PsiElement(OPEN_QUOTE)('"')
          PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('asd')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('1')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('bar')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('5')
      PsiWhiteSpace('\n  ')
      FUN
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('map')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          VALUE_PARAMETER
            PsiElement(IDENTIFIER)('f')
            PsiWhiteSpace(' ')
            PsiElement(COLON)(':')
            PsiWhiteSpace('  ')
            TYPE_REFERENCE
              FUNCTION_TYPE
                VALUE_PARAMETER_LIST
                  PsiElement(LPAR)('(')
                  PsiElement(RPAR)(')')
                PsiWhiteSpace(' ')
                PsiElement(ARROW)('->')
                PsiWhiteSpace(' ')
                TYPE_REFERENCE
                  NULLABLE_TYPE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Any')
                    PsiElement(QUEST)('?')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
        PsiWhiteSpace('  ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('1')
      PsiWhiteSpace('\n  ')
      FUN
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('buzz')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          VALUE_PARAMETER
            PsiElement(IDENTIFIER)('f')
            PsiWhiteSpace(' ')
            PsiElement(COLON)(':')
            PsiWhiteSpace('  ')
            TYPE_REFERENCE
              FUNCTION_TYPE
                VALUE_PARAMETER_LIST
                  PsiElement(LPAR)('(')
                  PsiElement(RPAR)(')')
                PsiWhiteSpace(' ')
                PsiElement(ARROW)('->')
                PsiWhiteSpace(' ')
                TYPE_REFERENCE
                  NULLABLE_TYPE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Any')
                    PsiElement(QUEST)('?')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
        PsiWhiteSpace('  ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('1')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('sdf')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('1')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('3')
      PsiElement(SEMICOLON)(';')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          THIS_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(this)('this')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)(' must be')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          PsiErrorElement:Keyword cannot be used as a reference
            PsiElement(as)('as')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('t')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('abc')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('abc')
        ESCAPE_STRING_TEMPLATE_ENTRY
          PsiElement(ESCAPE_SEQUENCE)('\"')
        PsiErrorElement:Expecting '"'
          <empty list>
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('$')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('$')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('.')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('$')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('.asdf')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('$')
        ESCAPE_STRING_TEMPLATE_ENTRY
          PsiElement(ESCAPE_SEQUENCE)('\t')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('asd')
        ESCAPE_STRING_TEMPLATE_ENTRY
          PsiElement(ESCAPE_SEQUENCE)('\$')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('asd')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('asd')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        SHORT_STRING_TEMPLATE_ENTRY
          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('asd')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('$')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('fosdfasdo')
        LONG_STRING_TEMPLATE_ENTRY
          PsiElement(LONG_TEMPLATE_ENTRY_START)('${')
          BINARY_EXPRESSION
            BINARY_EXPRESSION
              INTEGER_CONSTANT
                PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              OPERATION_REFERENCE
                PsiElement(PLUS)('+')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('bar')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(PLUS)('+')
            PsiWhiteSpace(' ')
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('100')
          PsiElement(LONG_TEMPLATE_ENTRY_END)('}')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('}sdsdfgdsfsdf')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('foo')
        LONG_STRING_TEMPLATE_ENTRY
          PsiElement(LONG_TEMPLATE_ENTRY_START)('${')
          BINARY_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('bar')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(PLUS)('+')
            PsiWhiteSpace(' ')
            CALL_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('map')
              PsiWhiteSpace(' ')
              LAMBDA_ARGUMENT
                LAMBDA_EXPRESSION
                  FUNCTION_LITERAL
                    PsiElement(LBRACE)('{')
                    BLOCK
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('foo')
                    PsiElement(RBRACE)('}')
          PsiElement(LONG_TEMPLATE_ENTRY_END)('}')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('sdfsdf')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('foo')
        LONG_STRING_TEMPLATE_ENTRY
          PsiElement(LONG_TEMPLATE_ENTRY_START)('${')
          BINARY_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('bar')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(PLUS)('+')
            PsiWhiteSpace(' ')
            CALL_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('map')
              PsiWhiteSpace(' ')
              LAMBDA_ARGUMENT
                LAMBDA_EXPRESSION
                  FUNCTION_LITERAL
                    PsiElement(LBRACE)('{')
                    PsiWhiteSpace(' ')
                    BLOCK
                      STRING_TEMPLATE
                        PsiElement(OPEN_QUOTE)('"')
                        LITERAL_STRING_TEMPLATE_ENTRY
                          PsiElement(REGULAR_STRING_PART)('foo')
                        PsiElement(CLOSING_QUOTE)('"')
                    PsiWhiteSpace(' ')
                    PsiElement(RBRACE)('}')
          PsiElement(LONG_TEMPLATE_ENTRY_END)('}')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('sdfsdf')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n    ')
      STRING_TEMPLATE
        PsiElement(OPEN_QUOTE)('"')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('foo')
        LONG_STRING_TEMPLATE_ENTRY
          PsiElement(LONG_TEMPLATE_ENTRY_START)('${')
          BINARY_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('bar')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(PLUS)('+')
            PsiWhiteSpace(' ')
            CALL_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('map')
              PsiWhiteSpace(' ')
              LAMBDA_ARGUMENT
                LAMBDA_EXPRESSION
                  FUNCTION_LITERAL
                    PsiElement(LBRACE)('{')
                    PsiWhiteSpace('\n      ')
                    BLOCK
                      STRING_TEMPLATE
                        PsiElement(OPEN_QUOTE)('"')
                        LITERAL_STRING_TEMPLATE_ENTRY
                          PsiElement(REGULAR_STRING_PART)('foo')
                        SHORT_STRING_TEMPLATE_ENTRY
                          PsiElement(SHORT_TEMPLATE_ENTRY_START)('$')
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('sdf')
                        LONG_STRING_TEMPLATE_ENTRY
                          PsiElement(LONG_TEMPLATE_ENTRY_START)('${')
                          PsiWhiteSpace(' ')
                          CALL_EXPRESSION
                            REFERENCE_EXPRESSION
                              PsiElement(IDENTIFIER)('buzz')
                            LAMBDA_ARGUMENT
                              LAMBDA_EXPRESSION
                                FUNCTION_LITERAL
                                  PsiElement(LBRACE)('{')
                                  BLOCK
                                    <empty list>
                                  PsiElement(RBRACE)('}')
                          PsiElement(LONG_TEMPLATE_ENTRY_END)('}')
                        PsiElement(CLOSING_QUOTE)('"')
                    PsiWhiteSpace(' ')
                    PsiElement(RBRACE)('}')
          PsiElement(LONG_TEMPLATE_ENTRY_END)('}')
        LITERAL_STRING_TEMPLATE_ENTRY
          PsiElement(REGULAR_STRING_PART)('sdfsdf')
        PsiElement(CLOSING_QUOTE)('"')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')
