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')
          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    ')
            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)('.')
              CALL_EXPRESSION
                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_IS_PATTERN
                  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)('(')
                      TUPLE_PATTERN_ENTRY
                        TYPE_PATTERN
                          TYPE_REFERENCE
                            USER_TYPE
                              REFERENCE_EXPRESSION
                                PsiElement(IDENTIFIER)('x')
                      PsiElement(RPAR)(')')
                PsiWhiteSpace(' ')
                PsiElement(DOUBLE_ARROW)('=>')
                PsiWhiteSpace(' ')
                BLOCK
                  PsiElement(LBRACE)('{')
                  PsiElement(RBRACE)('}')
              PsiWhiteSpace('\n    ')
              PsiElement(RBRACE)('}')
            PsiWhiteSpace('\n  ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')