JetFile: RootNamespace.jet
  NAMESPACE
    PsiElement(namespace)('namespace')
    PsiWhiteSpace(' ')
    NAMESPACE_NAME
      PsiElement(IDENTIFIER)('foo')
      PsiElement(DOT)('.')
      PsiElement(IDENTIFIER)('bar')
    PsiElement(SEMICOLON)(';')
    PsiWhiteSpace('\n\n')
    CLASS
      PsiElement(class)('class')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('X')
      PsiWhiteSpace('\n\n')
      TYPE_PARAMETER_LIST
        <empty list>
    NAMESPACE
      PsiElement(namespace)('namespace')
      PsiWhiteSpace(' ')
      NAMESPACE_NAME
        PsiElement(IDENTIFIER)('foo')
        PsiElement(DOT)('.')
        PsiElement(IDENTIFIER)('bar')
      PsiWhiteSpace(' ')
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n  ')
      NAMESPACE_BODY
        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    ')
            DOT_QUALIFIED_EXPRESSION
              DOT_QUALIFIED_EXPRESSION
                DOT_QUALIFIED_EXPRESSION
                  ROOT_NAMESPACE
                    PsiElement(namespace)('namespace')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('foo')
                PsiElement(DOT)('.')
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('bar')
              PsiElement(DOT)('.')
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('X')
            PsiWhiteSpace('\n    ')
            NEW
              PsiElement(new)('new')
              PsiWhiteSpace(' ')
              TYPE_REFERENCE
                USER_TYPE
                  USER_TYPE
                    USER_TYPE
                      PsiElement(namespace)('namespace')
                      PsiElement(DOT)('.')
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('foo')
                    PsiElement(DOT)('.')
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('bar')
                  PsiElement(DOT)('.')
                  REFERENCE_EXPRESSION
                    PsiElement(IDENTIFIER)('X')
              VALUE_ARGUMENT_LIST
                PsiElement(LPAR)('(')
                PsiElement(RPAR)(')')
            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
                  PsiElement(is)('is')
                  PsiWhiteSpace(' ')
                  DECOMPOSER_PATTERN
                    DOT_QUALIFIED_EXPRESSION
                      DOT_QUALIFIED_EXPRESSION
                        DOT_QUALIFIED_EXPRESSION
                          ROOT_NAMESPACE
                            PsiElement(namespace)('namespace')
                          PsiElement(DOT)('.')
                          REFERENCE_EXPRESSION
                            PsiElement(IDENTIFIER)('foo')
                        PsiElement(DOT)('.')
                        REFERENCE_EXPRESSION
                          PsiElement(IDENTIFIER)('bar')
                      PsiElement(DOT)('.')
                      REFERENCE_EXPRESSION
                        PsiElement(IDENTIFIER)('X')
                    PsiWhiteSpace(' ')
                    PsiElement(AT)('@')
                    PsiWhiteSpace(' ')
                    DECOMPOSER_ARGUMENT_LIST
                      PsiElement(LPAR)('(')
                      DECOMPOSER_ARGUMENT
                        TYPE_PATTERN
                          TYPE_REFERENCE
                            USER_TYPE
                              REFERENCE_EXPRESSION
                                PsiElement(IDENTIFIER)('x')
                      PsiElement(RPAR)(')')
                PsiWhiteSpace(' ')
                PsiElement(DOUBLE_ARROW)('=>')
                PsiWhiteSpace(' ')
                FUNCTION_LITERAL
                  PsiElement(LBRACE)('{')
                  BODY
                    <empty list>
                  PsiElement(RBRACE)('}')
              PsiWhiteSpace('\n    ')
              PsiElement(RBRACE)('}')
            PsiWhiteSpace('\n  ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')