JetFile: When.jet
  NAMESPACE_HEADER
    <empty list>
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('foo')
    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')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        FUNCTION_LITERAL_EXPRESSION
          FUNCTION_LITERAL
            PsiElement(LBRACE)('{')
            BLOCK
              WHEN
                PsiElement(when)('when')
                PsiElement(LPAR)('(')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('x')
                PsiElement(RPAR)(')')
                PsiWhiteSpace(' ')
                PsiElement(LBRACE)('{')
                PsiWhiteSpace(' ')
                WHEN_ENTRY
                  WHEN_CONDITION_IS_PATTERN
                    PsiElement(is)('is')
                    PsiWhiteSpace(' ')
                    TYPE_PATTERN
                      TYPE_REFERENCE
                        USER_TYPE
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(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')
        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')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        REFERENCE_EXPRESSION
          PsiElement(IDENTIFIER)('e')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n                          \n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        REFERENCE_EXPRESSION
          PsiElement(IDENTIFIER)('e')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TYPE_PATTERN
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        REFERENCE_EXPRESSION
          PsiElement(IDENTIFIER)('e')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Tree')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            EXPRESSION_PATTERN
              NULL
                PsiElement(null)('null')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            EXPRESSION_PATTERN
              INTEGER_CONSTANT
                PsiElement(INTEGER_LITERAL)('1')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TYPE_PATTERN
              TYPE_REFERENCE
                USER_TYPE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('A')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('b')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            EXPRESSION_PATTERN
              FLOAT_CONSTANT
                PsiElement(FLOAT_CONSTANT)('1.0')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            EXPRESSION_PATTERN
              CHARACTER_CONSTANT
                PsiElement(CHARACTER_LITERAL)(''c'')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            EXPRESSION_PATTERN
              STRING_TEMPLATE
                PsiElement(OPEN_QUOTE)('"')
                LITERAL_STRING_TEMPLATE_ENTRY
                  PsiElement(REGULAR_STRING_PART)('sadfsa')
                PsiElement(CLOSING_QUOTE)('"')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            EXPRESSION_PATTERN
              STRING_TEMPLATE
                PsiElement(OPEN_QUOTE)('"""')
                LITERAL_STRING_TEMPLATE_ENTRY
                  PsiElement(REGULAR_STRING_PART)('ddd')
                PsiElement(CLOSING_QUOTE)('"""')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            WILDCARD_PATTERN
              PsiElement(MUL)('*')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            BINDING_PATTERN
              PROPERTY
                PsiElement(val)('val')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace(' ')
              WHEN_CONDITION_IS_PATTERN
                PsiElement(is)('is')
                PsiWhiteSpace(' ')
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Foo')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TUPLE_PATTERN
              PsiElement(HASH)('#')
              PsiElement(LPAR)('(')
              TUPLE_PATTERN_ENTRY
                BINDING_PATTERN
                  PROPERTY
                    PsiElement(val)('val')
                    PsiWhiteSpace(' ')
                    PsiElement(IDENTIFIER)('a')
                  PsiWhiteSpace(' ')
                  WHEN_CONDITION_IS_PATTERN
                    PsiElement(is)('is')
                    PsiWhiteSpace(' ')
                    TYPE_PATTERN
                      TYPE_REFERENCE
                        USER_TYPE
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('Foo')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('b')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        WHEN
          PsiElement(when)('when')
          PsiElement(LPAR)('(')
          WHEN
            PsiElement(when)('when')
            PsiWhiteSpace(' ')
            PsiElement(LPAR)('(')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('e')
            PsiElement(RPAR)(')')
            PsiWhiteSpace(' ')
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
          PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n\n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')
  PsiWhiteSpace('\n\n')
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('foo')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(EQ)('=')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TYPE_PATTERN
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Tree')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Tree')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  EXPRESSION_PATTERN
                    NULL
                      PsiElement(null)('null')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  BINDING_PATTERN
                    PROPERTY
                      PsiElement(val)('val')
                      PsiWhiteSpace(' ')
                      PsiElement(IDENTIFIER)('r')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              DOT_QUALIFIED_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
                PsiElement(DOT)('.')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              DOT_QUALIFIED_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
                PsiElement(DOT)('.')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  PsiElement(IDENTIFIER)('foo')
                  PsiWhiteSpace(' ')
                  PsiElement(EQ)('=')
                  PsiWhiteSpace(' ')
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  PsiElement(IDENTIFIER)('bar')
                  PsiWhiteSpace(' ')
                  PsiElement(EQ)('=')
                  PsiWhiteSpace(' ')
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              DOT_QUALIFIED_EXPRESSION
                DOT_QUALIFIED_EXPRESSION
                  ROOT_NAMESPACE
                    PsiElement(package)('package')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('a')
                PsiElement(DOT)('.')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  BINDING_PATTERN
                    PROPERTY
                      PsiElement(val)('val')
                      PsiWhiteSpace(' ')
                      PsiElement(IDENTIFIER)('a')
                    PsiWhiteSpace(' ')
                    WHEN_CONDITION_IS_PATTERN
                      PsiElement(is)('is')
                      PsiWhiteSpace(' ')
                      TYPE_PATTERN
                        TYPE_REFERENCE
                          USER_TYPE
                            REFERENCE_EXPRESSION
                              PsiElement(IDENTIFIER)('T')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  EXPRESSION_PATTERN
                    INTEGER_CONSTANT
                      PsiElement(INTEGER_LITERAL)('1')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IN_RANGE
            OPERATION_REFERENCE
              PsiElement(in)('in')
            PsiWhiteSpace(' ')
            BINARY_EXPRESSION
              INTEGER_CONSTANT
                PsiElement(INTEGER_LITERAL)('1')
              OPERATION_REFERENCE
                PsiElement(RANGE)('..')
              INTEGER_CONSTANT
                PsiElement(INTEGER_LITERAL)('2')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('dsf')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IN_RANGE
            OPERATION_REFERENCE
              PsiElement(NOT_IN)('!in')
            PsiWhiteSpace(' ')
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('2')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('sd')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(NOT_IS)('!is')
            PsiWhiteSpace(' ')
            TYPE_PATTERN
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('t')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('d')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace('  ')
            PsiErrorElement:Pattern expected
              PsiElement(LPAR)('(')
              PsiElement(IDENTIFIER)('foo')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('Bar')
        PsiWhiteSpace(' ')
        WHEN_ENTRY
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              PsiErrorElement:Expecting an expression, is-condition or in-condition
                <empty list>
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('fgpp')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TUPLE_PATTERN
              PsiElement(HASH)('#')
              PsiElement(LPAR)('(')
              TUPLE_PATTERN_ENTRY
                EXPRESSION_PATTERN
                  INTEGER_CONSTANT
                    PsiElement(INTEGER_LITERAL)('1')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                BINDING_PATTERN
                  PROPERTY
                    PsiElement(val)('val')
                    PsiWhiteSpace(' ')
                    PsiElement(IDENTIFIER)('a')
                  PsiWhiteSpace(' ')
                  WHEN_CONDITION_IS_PATTERN
                    PsiElement(is)('is')
                    PsiWhiteSpace(' ')
                    TYPE_PATTERN
                      TYPE_REFERENCE
                        USER_TYPE
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('Foo')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                WILDCARD_PATTERN
                  PsiElement(MUL)('*')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Foo')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('bar')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('d')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TUPLE_PATTERN
              PsiElement(HASH)('#')
              PsiElement(LPAR)('(')
              TUPLE_PATTERN_ENTRY
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Foo')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                BINDING_PATTERN
                  PROPERTY
                    PsiElement(val)('val')
                    PsiWhiteSpace(' ')
                    PsiElement(IDENTIFIER)('a')
                  PsiWhiteSpace(' ')
                  WHEN_CONDITION_IN_RANGE
                    OPERATION_REFERENCE
                      PsiElement(in)('in')
                    PsiWhiteSpace(' ')
                    BINARY_EXPRESSION
                      INTEGER_CONSTANT
                        PsiElement(INTEGER_LITERAL)('1')
                      OPERATION_REFERENCE
                        PsiElement(RANGE)('..')
                      INTEGER_CONSTANT
                        PsiElement(INTEGER_LITERAL)('2')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                WILDCARD_PATTERN
                  PsiElement(MUL)('*')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                BINDING_PATTERN
                  PROPERTY
                    PsiElement(val)('val')
                    PsiWhiteSpace(' ')
                    PsiElement(IDENTIFIER)('_')
                  PsiWhiteSpace(' ')
                  WHEN_CONDITION_IS_PATTERN
                    PsiElement(NOT_IS)('!is')
                    PsiWhiteSpace(' ')
                    TYPE_PATTERN
                      TYPE_REFERENCE
                        USER_TYPE
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('Foo')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                BINDING_PATTERN
                  PROPERTY
                    PsiElement(val)('val')
                    PsiWhiteSpace(' ')
                    PsiElement(IDENTIFIER)('bar')
                  PsiWhiteSpace(' ')
                  WHEN_CONDITION_IS_PATTERN
                    PsiElement(is)('is')
                    PsiWhiteSpace(' ')
                    DECOMPOSER_PATTERN
                      DOT_QUALIFIED_EXPRESSION
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('foo')
                        PsiElement(DOT)('.')
                        CALL_EXPRESSION
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('bar')
                          TYPE_ARGUMENT_LIST
                            PsiElement(LT)('<')
                            TYPE_PROJECTION
                              TYPE_REFERENCE
                                USER_TYPE
                                  REFERENCE_EXPRESSION
                                    PsiElement(IDENTIFIER)('a')
                            PsiElement(GT)('>')
                      PsiWhiteSpace('  ')
                      DECOMPOSER_ARGUMENT_LIST
                        PsiElement(HASH)('#')
                        PsiElement(LPAR)('(')
                        TUPLE_PATTERN_ENTRY
                          TYPE_PATTERN
                            TYPE_REFERENCE
                              USER_TYPE
                                REFERENCE_EXPRESSION
                                  PsiElement(IDENTIFIER)('a')
                        PsiElement(RPAR)(')')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('d')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TUPLE_PATTERN
              PsiElement(HASH)('#')
              PsiElement(LPAR)('(')
              TUPLE_PATTERN_ENTRY
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Int')
              PsiElement(COMMA)(',')
              PsiWhiteSpace(' ')
              TUPLE_PATTERN_ENTRY
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Int')
              PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          INTEGER_CONSTANT
            PsiElement(INTEGER_LITERAL)('2')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            BINDING_PATTERN
              PROPERTY
                PsiElement(val)('val')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('a')
                PsiWhiteSpace(' ')
                PsiElement(COLON)(':')
                PsiWhiteSpace(' ')
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('Foo')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          INTEGER_CONSTANT
            PsiElement(INTEGER_LITERAL)('2')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          PsiElement(else)('else')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')
  PsiWhiteSpace('\n\n')
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('foo')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        PROPERTY
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('a')
          PsiWhiteSpace(' ')
          PsiElement(EQ)('=')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('e')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            TYPE_PATTERN
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Tree')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n    ')
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Tree')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  EXPRESSION_PATTERN
                    NULL
                      PsiElement(null)('null')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  BINDING_PATTERN
                    PROPERTY
                      PsiElement(val)('val')
                      PsiWhiteSpace(' ')
                      PsiElement(IDENTIFIER)('r')
                PsiElement(RPAR)(')')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n    ')
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              INTEGER_CONSTANT
                PsiElement(INTEGER_LITERAL)('1')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              CALL_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('foo')
                VALUE_ARGUMENT_LIST
                  PsiElement(LPAR)('(')
                  PsiElement(RPAR)(')')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('bar')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              BINARY_EXPRESSION
                INTEGER_CONSTANT
                  PsiElement(INTEGER_LITERAL)('2')
                PsiWhiteSpace(' ')
                OPERATION_REFERENCE
                  PsiElement(PLUS)('+')
                PsiWhiteSpace(' ')
                INTEGER_CONSTANT
                  PsiElement(INTEGER_LITERAL)('3')
          PsiElement(COMMA)(',')
          PsiWhiteSpace('\n    ')
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('a')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_IS_PATTERN
            PsiElement(is)('is')
            PsiWhiteSpace(' ')
            DECOMPOSER_PATTERN
              DOT_QUALIFIED_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
                PsiElement(DOT)('.')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
              PsiWhiteSpace('  ')
              DECOMPOSER_ARGUMENT_LIST
                PsiElement(HASH)('#')
                PsiElement(LPAR)('(')
                TUPLE_PATTERN_ENTRY
                  BINDING_PATTERN
                    PROPERTY
                      PsiElement(val)('val')
                      PsiWhiteSpace(' ')
                      PsiElement(IDENTIFIER)('b')
                PsiElement(COMMA)(',')
                PsiWhiteSpace(' ')
                TUPLE_PATTERN_ENTRY
                  TYPE_PATTERN
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('b')
                PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
        PsiWhiteSpace('\n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')
  PsiWhiteSpace('\n\n')
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('whenWithoutCondition')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('i')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Int')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      PROPERTY
        PsiElement(val)('val')
        PsiWhiteSpace(' ')
        PsiElement(IDENTIFIER)('j')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('12')
      PsiWhiteSpace('\n  ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              INTEGER_CONSTANT
                PsiElement(INTEGER_LITERAL)('3')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          PREFIX_EXPRESSION
            OPERATION_REFERENCE
              PsiElement(MINUS)('-')
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('1')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              BINARY_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('i')
                PsiWhiteSpace(' ')
                OPERATION_REFERENCE
                  PsiElement(EQEQ)('==')
                PsiWhiteSpace(' ')
                INTEGER_CONSTANT
                  PsiElement(INTEGER_LITERAL)('3')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          PREFIX_EXPRESSION
            OPERATION_REFERENCE
              PsiElement(MINUS)('-')
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('1')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              BINARY_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('j')
                PsiWhiteSpace(' ')
                OPERATION_REFERENCE
                  PsiElement(LT)('<')
                PsiWhiteSpace(' ')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('i')
          PsiElement(COMMA)(',')
          PsiWhiteSpace(' ')
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              BINARY_EXPRESSION
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('j')
                PsiWhiteSpace(' ')
                OPERATION_REFERENCE
                  PsiElement(EQEQ)('==')
                PsiWhiteSpace(' ')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('i')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          PREFIX_EXPRESSION
            OPERATION_REFERENCE
              PsiElement(MINUS)('-')
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('1')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          WHEN_CONDITION_WITH_EXPRESSION
            EXPRESSION_PATTERN
              BINARY_WITH_PATTERN
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('i')
                PsiWhiteSpace(' ')
                OPERATION_REFERENCE
                  PsiElement(is)('is')
                PsiWhiteSpace(' ')
                TYPE_PATTERN
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('Int')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          INTEGER_CONSTANT
            PsiElement(INTEGER_LITERAL)('1')
        PsiWhiteSpace('\n    ')
        WHEN_ENTRY
          PsiElement(else)('else')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          INTEGER_CONSTANT
            PsiElement(INTEGER_LITERAL)('2')
        PsiWhiteSpace('\n  ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')