JetFile: Match.jet
  NAMESPACE
    FUN
      PsiElement(fun)('fun')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('foo')
      TYPE_PARAMETER_LIST
        <empty list>
      VALUE_PARAMETER_LIST
        PsiElement(LPAR)('(')
        PsiElement(RPAR)(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n  ')
        RETURN
          PsiElement(return)('return')
          PsiWhiteSpace(' ')
          BOOLEAN_CONSTANT
            PsiElement(false)('false')
        PsiWhiteSpace('\n\n  ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('a')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(EQ)('=')
          PsiWhiteSpace(' ')
          FUNCTION_LITERAL
            PsiElement(LBRACE)('{')
            BODY
              MATCH_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
                PsiWhiteSpace(' ')
                PsiElement(match)('match')
                PsiWhiteSpace(' ')
                MATCH_BLOCK
                  PsiElement(LBRACE)('{')
                  PsiWhiteSpace(' ')
                  MATCH_ENTRY
                    PsiElement(case)('case')
                    PsiWhiteSpace(' ')
                    PATTERN
                      USER_TYPE
                        PsiElement(IDENTIFIER)('a')
                    PsiWhiteSpace(' ')
                    PsiElement(DOUBLE_ARROW)('=>')
                    PsiWhiteSpace(' ')
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('b')
                  PsiWhiteSpace(' ')
                  PsiElement(RBRACE)('}')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n\n  ')
        PsiComment(EOL_COMMENT)('// foo')
        PsiWhiteSpace('\n  ')
        FUN
          PsiElement(fun)('fun')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('b')
          TYPE_PARAMETER_LIST
            <empty list>
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n\n')
        PsiElement(RBRACE)('}')
    PsiWhiteSpace('\n\n')
    FUN
      PsiElement(fun)('fun')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('foo')
      TYPE_PARAMETER_LIST
        <empty list>
      VALUE_PARAMETER_LIST
        PsiElement(LPAR)('(')
        PsiElement(RPAR)(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n  ')
        MATCH_EXPRESSION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          MATCH_BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        MATCH_EXPRESSION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          MATCH_BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                USER_TYPE
                  PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        MATCH_EXPRESSION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          MATCH_BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                USER_TYPE
                  PsiElement(IDENTIFIER)('Tree')
                TUPLE_PATTERN
                  PsiElement(LPAR)('(')
                  PATTERN
                    USER_TYPE
                      PsiElement(IDENTIFIER)('a')
                  PsiElement(COMMA)(',')
                  PsiWhiteSpace(' ')
                  PATTERN
                    USER_TYPE
                      PsiElement(IDENTIFIER)('b')
                  PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                USER_TYPE
                  PsiElement(IDENTIFIER)('Tree')
                TUPLE_PATTERN
                  PsiElement(LPAR)('(')
                  PATTERN
                    USER_TYPE
                      PsiElement(IDENTIFIER)('a')
                  PsiElement(COMMA)(',')
                  PsiWhiteSpace(' ')
                  PATTERN
                    USER_TYPE
                      PsiElement(IDENTIFIER)('b')
                  PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              PsiElement(if)('if')
              PsiWhiteSpace(' ')
              PsiElement(LPAR)('(')
              CONDITION
                BINARY_EXPRESSION
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(GT)('>')
                  PsiWhiteSpace(' ')
                  INTEGER_CONSTANT
                    PsiElement(INTEGER_LITERAL)('5')
              PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                NULL
                  PsiElement(null)('null')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                INTEGER_CONSTANT
                  PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                USER_TYPE
                  PsiElement(IDENTIFIER)('A')
                PsiElement(DOT)('.')
                USER_TYPE
                  PsiElement(IDENTIFIER)('b')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                LONG_CONSTANT
                  PsiElement(LONG_LITERAL)('1l')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                FLOAT_CONSTANT
                  PsiElement(FLOAT_CONSTANT)('1.0')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                CHARACTER_CONSTANT
                  PsiElement(CHARACTER_LITERAL)(''c'')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                STRING_CONSTANT
                  PsiElement(STRING_LITERAL)('"sadfsa"')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                STRING_CONSTANT
                  PsiElement(RAW_STRING_LITERAL)('"""ddd"""')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                PsiElement(QUEST)('?')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                PsiElement(QUEST)('?')
                PsiWhiteSpace(' ')
                PsiElement(COLON)(':')
                PsiWhiteSpace(' ')
                PATTERN
                  USER_TYPE
                    PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                PsiElement(QUEST)('?')
                PsiElement(IDENTIFIER)('a')
                PsiWhiteSpace(' ')
                PsiElement(COLON)(':')
                PsiWhiteSpace(' ')
                PATTERN
                  USER_TYPE
                    PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n    ')
            MATCH_ENTRY
              PsiElement(case)('case')
              PsiWhiteSpace(' ')
              PATTERN
                TUPLE_PATTERN
                  PsiElement(LPAR)('(')
                  PATTERN
                    PsiElement(QUEST)('?')
                    PsiElement(IDENTIFIER)('a')
                    PsiWhiteSpace(' ')
                    PsiElement(COLON)(':')
                    PsiWhiteSpace(' ')
                    PATTERN
                      USER_TYPE
                        PsiElement(IDENTIFIER)('Foo')
                  PsiElement(COMMA)(',')
                  PsiWhiteSpace(' ')
                  PATTERN
                    USER_TYPE
                      PsiElement(IDENTIFIER)('b')
                  PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              PsiElement(DOUBLE_ARROW)('=>')
              PsiWhiteSpace(' ')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiWhiteSpace('\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        MATCH_EXPRESSION
          MATCH_EXPRESSION
            MATCH_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('e')
              PsiWhiteSpace(' ')
              PsiElement(match)('match')
              PsiWhiteSpace(' ')
              MATCH_BLOCK
                PsiElement(LBRACE)('{')
                PsiWhiteSpace('\n\n  ')
                PsiElement(RBRACE)('}')
            PsiWhiteSpace(' ')
            PsiElement(match)('match')
            PsiWhiteSpace(' ')
            MATCH_BLOCK
              PsiElement(LBRACE)('{')
              PsiWhiteSpace('\n\n  ')
              PsiElement(RBRACE)('}')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          MATCH_BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n')
        PsiElement(RBRACE)('}')