D Language File
  DLanguageDeclarationImpl(DECLARATION)
    DLanguageAttributeImpl(ATTRIBUTE)
      DLanguageLinkageAttributeImpl(LINKAGE_ATTRIBUTE)
        PsiElement(DlangTokenType.extern)('extern')
        PsiElement(DlangTokenType.()('(')
        IDENTIFIER
          PsiElement(DlangTokenType.ID)('C')
        PsiElement(DlangTokenType.++)('++')
        PsiElement(DlangTokenType.,)(',')
        DLanguageIdentifierChainImpl(IDENTIFIER_CHAIN)
          IDENTIFIER
            PsiElement(DlangTokenType.ID)('N')
        PsiElement(DlangTokenType.))(')')
    PsiElement(DlangTokenType.{)('{')
    DLanguageDeclarationImpl(DECLARATION)
      FUNCTION_DECLARATION
        DLanguageTypeImpl(TYPE)
          DLanguageType_2Impl(TYPE_2)
            DLanguageBuiltinTypeImpl(BUILTIN_TYPE)
              PsiElement(DlangTokenType.void)('void')
        IDENTIFIER
          PsiElement(DlangTokenType.ID)('foo')
        DLanguageParametersImpl(PARAMETERS)
          PsiElement(DlangTokenType.()('(')
          PsiElement(DlangTokenType.))(')')
        PsiElement(DlangTokenType.;)(';')
    PsiElement(DlangTokenType.})('}')
  PsiComment(DlangTokenType.LINE_COMMENT)('//no longer valid d:')
  PsiComment(DlangTokenType.LINE_COMMENT)('//namespace N { void foo(); }')
  DLanguageDeclarationImpl(DECLARATION)
    UNITTEST
      UNITTEST
        PsiElement(DlangTokenType.unittest)('unittest')
        DLanguageBlockStatementImpl(BLOCK_STATEMENT)
          PsiElement(DlangTokenType.{)('{')
          DLanguageDeclarationsAndStatementsImpl(DECLARATIONS_AND_STATEMENTS)
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageStatementImpl(STATEMENT)
                DLanguageStatementNoCaseNoDefaultImpl(STATEMENT_NO_CASE_NO_DEFAULT)
                  DLanguageExpressionStatementImpl(EXPRESSION_STATEMENT)
                    DLanguageExpressionImpl(EXPRESSION)
                      DLanguageAssignExpressionImpl(ASSIGN_EXPRESSION)
                        DLanguageCmpExpressionImpl(CMP_EXPRESSION)
                          DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                            DLanguageFunctionCallExpressionImpl(FUNCTION_CALL_EXPRESSION)
                              DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                                DLanguagePrimaryExpressionImpl(PRIMARY_EXPRESSION)
                                  DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                    IDENTIFIER
                                      PsiElement(DlangTokenType.ID)('foo')
                              DLanguageArgumentsImpl(ARGUMENTS)
                                PsiElement(DlangTokenType.()('(')
                                PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageStatementImpl(STATEMENT)
                DLanguageStatementNoCaseNoDefaultImpl(STATEMENT_NO_CASE_NO_DEFAULT)
                  DLanguageExpressionStatementImpl(EXPRESSION_STATEMENT)
                    DLanguageExpressionImpl(EXPRESSION)
                      DLanguageAssignExpressionImpl(ASSIGN_EXPRESSION)
                        DLanguageCmpExpressionImpl(CMP_EXPRESSION)
                          DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                            DLanguageFunctionCallExpressionImpl(FUNCTION_CALL_EXPRESSION)
                              DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                                DLanguagePrimaryExpressionImpl(PRIMARY_EXPRESSION)
                                  DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                    IDENTIFIER
                                      PsiElement(DlangTokenType.ID)('N')
                                PsiElement(DlangTokenType..)('.')
                                DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                  IDENTIFIER
                                    PsiElement(DlangTokenType.ID)('foo')
                              DLanguageArgumentsImpl(ARGUMENTS)
                                PsiElement(DlangTokenType.()('(')
                                PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageDeclarationImpl(DECLARATION)
                DLanguageAttributeImpl(ATTRIBUTE)
                  DLanguageLinkageAttributeImpl(LINKAGE_ATTRIBUTE)
                    PsiElement(DlangTokenType.extern)('extern')
                    PsiElement(DlangTokenType.()('(')
                    IDENTIFIER
                      PsiElement(DlangTokenType.ID)('C')
                    PsiElement(DlangTokenType.++)('++')
                    PsiElement(DlangTokenType.,)(',')
                    DLanguageIdentifierChainImpl(IDENTIFIER_CHAIN)
                      IDENTIFIER
                        PsiElement(DlangTokenType.ID)('N')
                    PsiElement(DlangTokenType.))(')')
                PsiElement(DlangTokenType.{)('{')
                DLanguageDeclarationImpl(DECLARATION)
                  FUNCTION_DECLARATION
                    DLanguageTypeImpl(TYPE)
                      DLanguageType_2Impl(TYPE_2)
                        DLanguageBuiltinTypeImpl(BUILTIN_TYPE)
                          PsiElement(DlangTokenType.void)('void')
                    IDENTIFIER
                      PsiElement(DlangTokenType.ID)('foo')
                    DLanguageParametersImpl(PARAMETERS)
                      PsiElement(DlangTokenType.()('(')
                      PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
                DLanguageDeclarationImpl(DECLARATION)
                  FUNCTION_DECLARATION
                    DLanguageTypeImpl(TYPE)
                      DLanguageType_2Impl(TYPE_2)
                        DLanguageBuiltinTypeImpl(BUILTIN_TYPE)
                          PsiElement(DlangTokenType.void)('void')
                    IDENTIFIER
                      PsiElement(DlangTokenType.ID)('bar')
                    DLanguageParametersImpl(PARAMETERS)
                      PsiElement(DlangTokenType.()('(')
                      PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
                PsiElement(DlangTokenType.})('}')
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageDeclarationImpl(DECLARATION)
                DLanguageAttributeImpl(ATTRIBUTE)
                  DLanguageLinkageAttributeImpl(LINKAGE_ATTRIBUTE)
                    PsiElement(DlangTokenType.extern)('extern')
                    PsiElement(DlangTokenType.()('(')
                    IDENTIFIER
                      PsiElement(DlangTokenType.ID)('C')
                    PsiElement(DlangTokenType.++)('++')
                    PsiElement(DlangTokenType.,)(',')
                    DLanguageIdentifierChainImpl(IDENTIFIER_CHAIN)
                      IDENTIFIER
                        PsiElement(DlangTokenType.ID)('M')
                    PsiElement(DlangTokenType.))(')')
                PsiElement(DlangTokenType.{)('{')
                DLanguageDeclarationImpl(DECLARATION)
                  FUNCTION_DECLARATION
                    DLanguageTypeImpl(TYPE)
                      DLanguageType_2Impl(TYPE_2)
                        DLanguageBuiltinTypeImpl(BUILTIN_TYPE)
                          PsiElement(DlangTokenType.void)('void')
                    IDENTIFIER
                      PsiElement(DlangTokenType.ID)('foo')
                    DLanguageParametersImpl(PARAMETERS)
                      PsiElement(DlangTokenType.()('(')
                      PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
                PsiElement(DlangTokenType.})('}')
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageStatementImpl(STATEMENT)
                DLanguageStatementNoCaseNoDefaultImpl(STATEMENT_NO_CASE_NO_DEFAULT)
                  DLanguageExpressionStatementImpl(EXPRESSION_STATEMENT)
                    DLanguageExpressionImpl(EXPRESSION)
                      DLanguageAssignExpressionImpl(ASSIGN_EXPRESSION)
                        DLanguageCmpExpressionImpl(CMP_EXPRESSION)
                          DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                            DLanguageFunctionCallExpressionImpl(FUNCTION_CALL_EXPRESSION)
                              DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                                DLanguagePrimaryExpressionImpl(PRIMARY_EXPRESSION)
                                  DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                    IDENTIFIER
                                      PsiElement(DlangTokenType.ID)('bar')
                              DLanguageArgumentsImpl(ARGUMENTS)
                                PsiElement(DlangTokenType.()('(')
                                PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
            PsiComment(DlangTokenType.LINE_COMMENT)('// ok')
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageStatementImpl(STATEMENT)
                DLanguageStatementNoCaseNoDefaultImpl(STATEMENT_NO_CASE_NO_DEFAULT)
                  DLanguageExpressionStatementImpl(EXPRESSION_STATEMENT)
                    DLanguageExpressionImpl(EXPRESSION)
                      DLanguageAssignExpressionImpl(ASSIGN_EXPRESSION)
                        DLanguageCmpExpressionImpl(CMP_EXPRESSION)
                          DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                            DLanguageFunctionCallExpressionImpl(FUNCTION_CALL_EXPRESSION)
                              DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                                DLanguagePrimaryExpressionImpl(PRIMARY_EXPRESSION)
                                  DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                    IDENTIFIER
                                      PsiElement(DlangTokenType.ID)('foo')
                              DLanguageArgumentsImpl(ARGUMENTS)
                                PsiElement(DlangTokenType.()('(')
                                PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
            PsiComment(DlangTokenType.LINE_COMMENT)('// error - N.foo() or M.foo() ?')
            DLanguageDeclarationOrStatementImpl(DECLARATION_OR_STATEMENT)
              DLanguageStatementImpl(STATEMENT)
                DLanguageStatementNoCaseNoDefaultImpl(STATEMENT_NO_CASE_NO_DEFAULT)
                  DLanguageExpressionStatementImpl(EXPRESSION_STATEMENT)
                    DLanguageExpressionImpl(EXPRESSION)
                      DLanguageAssignExpressionImpl(ASSIGN_EXPRESSION)
                        DLanguageCmpExpressionImpl(CMP_EXPRESSION)
                          DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                            DLanguageFunctionCallExpressionImpl(FUNCTION_CALL_EXPRESSION)
                              DLanguageUnaryExpressionImpl(UNARY_EXPRESSION)
                                DLanguagePrimaryExpressionImpl(PRIMARY_EXPRESSION)
                                  DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                    IDENTIFIER
                                      PsiElement(DlangTokenType.ID)('M')
                                PsiElement(DlangTokenType..)('.')
                                DLanguageIdentifierOrTemplateInstanceImpl(IDENTIFIER_OR_TEMPLATE_INSTANCE)
                                  IDENTIFIER
                                    PsiElement(DlangTokenType.ID)('foo')
                              DLanguageArgumentsImpl(ARGUMENTS)
                                PsiElement(DlangTokenType.()('(')
                                PsiElement(DlangTokenType.))(')')
                    PsiElement(DlangTokenType.;)(';')
          PsiComment(DlangTokenType.LINE_COMMENT)('// ok')
          PsiElement(DlangTokenType.})('}')