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_QIALIFIED_EXPRESSION
              DOT_QIALIFIED_EXPRESSION
                DOT_QIALIFIED_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
                PsiElement(namespace)('namespace')
                PsiElement(DOT)('.')
                USER_TYPE
                  PsiElement(IDENTIFIER)('foo')
                PsiElement(DOT)('.')
                USER_TYPE
                  PsiElement(IDENTIFIER)('bar')
                PsiElement(DOT)('.')
                USER_TYPE
                  PsiElement(IDENTIFIER)('X')
              VALUE_ARGUMENT_LIST
                PsiElement(LPAR)('(')
                PsiElement(RPAR)(')')
            PsiWhiteSpace('\n    ')
            MATCH_EXPRESSION
              REFERENCE_EXPRESSION
                PsiElement(IDENTIFIER)('e')
              PsiWhiteSpace(' ')
              PsiElement(match)('match')
              PsiWhiteSpace(' ')
              MATCH_BLOCK
                PsiElement(LBRACE)('{')
                PsiWhiteSpace('\n      ')
                MATCH_ENTRY
                  PsiElement(case)('case')
                  PsiWhiteSpace(' ')
                  PATTERN
                    PsiElement(namespace)('namespace')
                    PsiElement(DOT)('.')
                    USER_TYPE
                      PsiElement(IDENTIFIER)('foo')
                    PsiElement(DOT)('.')
                    USER_TYPE
                      PsiElement(IDENTIFIER)('bar')
                    PsiElement(DOT)('.')
                    USER_TYPE
                      PsiElement(IDENTIFIER)('X')
                    TUPLE_PATTERN
                      PsiElement(LPAR)('(')
                      PATTERN
                        USER_TYPE
                          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)('}')