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
              BINARY_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
                PsiWhiteSpace(' ')
                PsiElement(match)('match')
                PsiWhiteSpace(' ')
                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  ')
        BINARY_EXPRESSION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        BINARY_EXPRESSION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          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  ')
        BINARY_EXPRESSION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          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  ')
        BINARY_EXPRESSION
          BINARY_EXPRESSION
            BINARY_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('e')
              PsiWhiteSpace(' ')
              PsiElement(match)('match')
              PsiWhiteSpace(' ')
              PsiElement(LBRACE)('{')
              PsiWhiteSpace('\n\n  ')
              PsiElement(RBRACE)('}')
            PsiWhiteSpace(' ')
            PsiElement(match)('match')
            PsiWhiteSpace(' ')
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
          PsiWhiteSpace(' ')
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n')
        PsiElement(RBRACE)('}')