JetFile: ControlStructures.kt
  PACKAGE_DIRECTIVE
    <empty list>
  IMPORT_LIST
    <empty list>
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('a')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        THROW
          PsiElement(throw)('throw')
          PsiWhiteSpace(' ')
          CALL_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Foo')
            VALUE_ARGUMENT_LIST
              PsiElement(LPAR)('(')
              PsiElement(RPAR)(')')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        RETURN
          PsiElement(return)('return')
          PsiWhiteSpace(' ')
          INTEGER_CONSTANT
            PsiElement(INTEGER_LITERAL)('10')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        BREAK
          PsiElement(break)('break')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        BREAK
          PsiElement(break)('break')
          LABEL_QUALIFIER
            LABEL
              PsiElement(AT)('@')
              PsiElement(IDENTIFIER)('la')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        CONTINUE
          PsiElement(continue)('continue')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        CONTINUE
          PsiElement(continue)('continue')
          LABEL_QUALIFIER
            LABEL
              PsiElement(AT)('@')
              PsiElement(IDENTIFIER)('la')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        IF
          PsiElement(if)('if')
          PsiWhiteSpace(' ')
          PsiElement(LPAR)('(')
          CONDITION
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('10')
          PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          THEN
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
          PsiWhiteSpace(' ')
          PsiElement(else)('else')
          PsiWhiteSpace(' ')
          ELSE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('bar')
      PsiElement(COMMA)(',')
      PsiWhiteSpace('\n    ')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        IF
          PsiElement(if)('if')
          PsiWhiteSpace(' ')
          PsiElement(LPAR)('(')
          CONDITION
            INTEGER_CONSTANT
              PsiElement(INTEGER_LITERAL)('10')
          PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          THEN
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
      PsiWhiteSpace('\n')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      RETURN
        PsiElement(return)('return')
        PsiWhiteSpace(' ')
        INTEGER_CONSTANT
          PsiElement(INTEGER_LITERAL)('10')
      PsiWhiteSpace('\n  ')
      RETURN
        PsiElement(return)('return')
      PsiWhiteSpace('\n  ')
      INTEGER_CONSTANT
        PsiElement(INTEGER_LITERAL)('10')
      PsiWhiteSpace('\n  ')
      BREAK
        PsiElement(break)('break')
      PsiWhiteSpace('\n  ')
      LABELED_EXPRESSION
        LABEL_QUALIFIER
          LABEL
            PsiElement(IDENTIFIER)('la')
            PsiElement(AT)('@')
        PsiWhiteSpace('\n  ')
        BREAK
          PsiElement(break)('break')
          LABEL_QUALIFIER
            LABEL
              PsiElement(AT)('@')
              PsiElement(IDENTIFIER)('la')
      PsiWhiteSpace('\n  ')
      CONTINUE
        PsiElement(continue)('continue')
      PsiWhiteSpace('\n  ')
      LABELED_EXPRESSION
        LABEL_QUALIFIER
          LABEL
            PsiElement(IDENTIFIER)('la')
            PsiElement(AT)('@')
        PsiWhiteSpace('\n  ')
        CONTINUE
          PsiElement(continue)('continue')
          LABEL_QUALIFIER
            LABEL
              PsiElement(AT)('@')
              PsiElement(IDENTIFIER)('la')
      PsiWhiteSpace('\n  ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n    ')
        THEN
          IF
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            PsiElement(LPAR)('(')
            CONDITION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiElement(RPAR)(')')
            PsiWhiteSpace('\n      ')
            THEN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('bar')
            PsiWhiteSpace('\n    ')
            PsiElement(else)('else')
            PsiWhiteSpace('\n      ')
            ELSE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace('\n  ')
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          IF
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            PsiElement(LPAR)('(')
            CONDITION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('foo')
            PsiElement(RPAR)(')')
            PsiWhiteSpace('\n    ')
            THEN
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('bar')
            PsiWhiteSpace('\n  ')
            PsiElement(else)('else')
            PsiWhiteSpace('\n    ')
            ELSE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('bar')
      PsiWhiteSpace('\n\n  ')
      TRY
        PsiElement(try)('try')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        CATCH
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Bar')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n  ')
      TRY
        PsiElement(try)('try')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        CATCH
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Bar')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        CATCH
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Bar')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        CATCH
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Bar')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n  ')
      TRY
        PsiElement(try)('try')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        CATCH
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Bar')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        CATCH
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          VALUE_PARAMETER_LIST
            PsiElement(LPAR)('(')
            VALUE_PARAMETER
              PsiElement(IDENTIFIER)('Foo')
              PsiWhiteSpace(' ')
              PsiElement(COLON)(':')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('Bar')
            PsiElement(RPAR)(')')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        FINALLY
          PsiElement(finally)('finally')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n  ')
      TRY
        PsiElement(try)('try')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n\n  ')
          PsiElement(RBRACE)('}')
        PsiWhiteSpace('\n  ')
        FINALLY
          PsiElement(finally)('finally')
          PsiWhiteSpace(' ')
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n  ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
      PsiWhiteSpace('\n    ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
      PsiWhiteSpace('\n      ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(val)('val')
          PsiWhiteSpace(' ')
          PsiElement(IDENTIFIER)('x')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Int')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
      PsiWhiteSpace('\n        ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(IDENTIFIER)('x')
          PsiWhiteSpace(' ')
          PsiElement(COLON)(':')
          PsiWhiteSpace(' ')
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('Int')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n  ')
      WHILE
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          BOOLEAN_CONSTANT
            PsiElement(true)('true')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n  ')
      DO_WHILE
        PsiElement(do)('do')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n\n  ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace(' ')
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          BOOLEAN_CONSTANT
            PsiElement(false)('false')
        PsiElement(RPAR)(')')
      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    ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n      ')
        BODY
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace('\n\n    ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n      ')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('b')
            PsiWhiteSpace('\n    ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        VALUE_PARAMETER
          PsiElement(IDENTIFIER)('a')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        BODY
          <empty list>
      PsiElement(SEMICOLON)(';')
      PsiWhiteSpace('\n      ')
      REFERENCE_EXPRESSION
        PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace('\n\n    ')
      WHILE
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          BINARY_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(in)('in')
            PsiWhiteSpace(' ')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n      ')
        BODY
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace('\n\n    ')
      WHILE
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          BINARY_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(in)('in')
            PsiWhiteSpace(' ')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n      ')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('b')
            PsiWhiteSpace('\n    ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      WHILE
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          BINARY_EXPRESSION
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('a')
            PsiWhiteSpace(' ')
            OPERATION_REFERENCE
              PsiElement(in)('in')
            PsiWhiteSpace(' ')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('b')
        PsiElement(RPAR)(')')
        BODY
          <empty list>
      PsiElement(SEMICOLON)(';')
      PsiWhiteSpace('\n      ')
      REFERENCE_EXPRESSION
        PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace('\n\n    ')
      WHILE
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n      ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiWhiteSpace('\n    ')
        PsiElement(else)('else')
        PsiWhiteSpace('\n      ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiWhiteSpace('\n\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiWhiteSpace(' ')
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiWhiteSpace('\n\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
        PsiWhiteSpace('\n    ')
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiWhiteSpace('\n\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n      ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
          PsiElement(SEMICOLON)(';')
        PsiWhiteSpace('\n    ')
        PsiElement(else)('else')
        PsiWhiteSpace('\n      ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiElement(SEMICOLON)(';')
      PsiWhiteSpace('\n\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace('\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n      ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
      PsiWhiteSpace('\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n      ')
        THEN
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('b')
      PsiElement(SEMICOLON)(';')
      PsiWhiteSpace('\n\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        THEN
          <empty list>
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiWhiteSpace('\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n    ')
        THEN
          <empty list>
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiWhiteSpace('\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n     ')
        THEN
          PsiElement(SEMICOLON)(';')
        PsiWhiteSpace('\n    ')
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('c')
      PsiWhiteSpace('\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('a')
        PsiElement(RPAR)(')')
        PsiWhiteSpace('\n    ')
        THEN
          <empty list>
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          <empty list>
      PsiElement(SEMICOLON)(';')
      PsiWhiteSpace('\n\n    ')
      DO_WHILE
        PsiElement(do)('do')
        PsiWhiteSpace(' ')
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('r')
        PsiElement(RPAR)(')')
      PsiWhiteSpace('\n    ')
      DO_WHILE
        PsiElement(do)('do')
        PsiWhiteSpace(' ')
        BODY
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('foo')
        PsiWhiteSpace(' ')
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('r')
        PsiElement(RPAR)(')')
      PsiWhiteSpace('\n    ')
      DO_WHILE
        PsiElement(do)('do')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiErrorElement:Expecting an element
              PsiElement(DOUBLE_SEMICOLON)(';;')
            PsiElement(SEMICOLON)(';')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('foo')
            PsiElement(SEMICOLON)(';')
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('bar')
            PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
              PsiElement(DOUBLE_SEMICOLON)(';;')
              PsiElement(DOUBLE_SEMICOLON)(';;')
            PsiWhiteSpace(' ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace(' ')
        PsiElement(while)('while')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          REFERENCE_EXPRESSION
            PsiElement(IDENTIFIER)('r')
        PsiElement(RPAR)(')')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')