FILE
  RsMacro2Impl(MACRO_2)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(macro)('macro')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    PsiElement(()('(')
    RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
      RsMacroBindingImpl(MACRO_BINDING)
        PsiElement($)('$')
        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
          PsiElement(identifier)('e')
        PsiElement(:)(':')
        PsiElement(identifier)('expr')
    PsiElement())(')')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
      PsiElement(identifier)('println')
      PsiElement(!)('!')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement(()('(')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          PsiElement(STRING_LITERAL)('"Hello!, {}"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroReferenceImpl(MACRO_REFERENCE)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('e')
        PsiElement())(')')
      PsiElement(;)(';')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacro2Impl(MACRO_2)
    PsiElement(macro)('macro')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('m')
    PsiElement(()('(')
    RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
      RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
        PsiElement($)('$')
        PsiElement(()('(')
        RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
          RsMacroBindingImpl(MACRO_BINDING)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('t')
            PsiElement(:)(':')
            PsiElement(identifier)('tt')
        PsiElement())(')')
        PsiElement(*)('*')
    PsiElement())(')')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
      RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
        PsiElement($)('$')
        PsiElement(()('(')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          RsMacroReferenceImpl(MACRO_REFERENCE)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('t')
        PsiElement())(')')
        PsiElement(*)('*')
      PsiWhiteSpace('\n    ')
      PsiElement(use)('use')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('foo')
      PsiElement(::)('::')
      PsiElement(*)('*')
      PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      PsiElement(identifier)('f')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement(()('(')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          <empty list>
        PsiElement())(')')
      PsiElement(;)(';')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacro2Impl(MACRO_2)
    PsiElement(macro)('macro')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('n')
    PsiElement(()('(')
    RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
      RsMacroBindingImpl(MACRO_BINDING)
        PsiElement($)('$')
        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
          PsiElement(identifier)('foo')
        PsiElement(:)(':')
        PsiElement(identifier)('ident')
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsMacroBindingImpl(MACRO_BINDING)
        PsiElement($)('$')
        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
          PsiElement(identifier)('S')
        PsiElement(:)(':')
        PsiElement(identifier)('ident')
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsMacroBindingImpl(MACRO_BINDING)
        PsiElement($)('$')
        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
          PsiElement(identifier)('i')
        PsiElement(:)(':')
        PsiElement(identifier)('ident')
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsMacroBindingImpl(MACRO_BINDING)
        PsiElement($)('$')
        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
          PsiElement(identifier)('m')
        PsiElement(:)(':')
        PsiElement(identifier)('ident')
    PsiElement())(')')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
      PsiElement(mod)('mod')
      PsiWhiteSpace(' ')
      RsMacroReferenceImpl(MACRO_REFERENCE)
        PsiElement($)('$')
        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
          PsiElement(identifier)('foo')
      PsiWhiteSpace(' ')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement({)('{')
        PsiWhiteSpace('\n        ')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          PsiElement(#)('#')
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement([)('[')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              PsiElement(identifier)('derive')
              RsMacroExpansionImpl(MACRO_EXPANSION)
                PsiElement(()('(')
                RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                  PsiElement(identifier)('Default')
                PsiElement())(')')
            PsiElement(])(']')
          PsiWhiteSpace('\n        ')
          PsiElement(pub)('pub')
          PsiWhiteSpace(' ')
          PsiElement(struct)('struct')
          PsiWhiteSpace(' ')
          RsMacroReferenceImpl(MACRO_REFERENCE)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              RsMacroReferenceImpl(MACRO_REFERENCE)
                PsiElement($)('$')
                RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                  PsiElement(identifier)('i')
              PsiElement(:)(':')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('u32')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
          PsiWhiteSpace('\n        ')
          PsiElement(pub)('pub')
          PsiWhiteSpace(' ')
          PsiElement(macro)('macro')
          PsiWhiteSpace(' ')
          RsMacroReferenceImpl(MACRO_REFERENCE)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('m')
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement(()('(')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              RsMacroReferenceImpl(MACRO_REFERENCE)
                PsiElement($)('$')
                RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                  PsiElement(identifier)('e')
              PsiElement(:)(':')
              PsiElement(identifier)('expr')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              RsMacroReferenceImpl(MACRO_REFERENCE)
                PsiElement($)('$')
                RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                  PsiElement(identifier)('e')
              PsiElement(.)('.')
              RsMacroReferenceImpl(MACRO_REFERENCE)
                PsiElement($)('$')
                RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                  PsiElement(identifier)('i')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
        PsiWhiteSpace('\n    ')
        PsiElement(})('}')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacro2Impl(MACRO_2)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(macro)('macro')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('bar')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsMacroCaseImpl(MACRO_CASE)
      RsMacroPatternImpl(MACRO_PATTERN)
        PsiElement([)('[')
        RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
          RsMacroBindingImpl(MACRO_BINDING)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('e')
            PsiElement(:)(':')
            PsiElement(identifier)('expr')
        PsiElement(])(']')
      PsiWhiteSpace(' ')
      PsiElement(=>)('=>')
      PsiWhiteSpace(' ')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement({)('{')
        PsiWhiteSpace('\n        ')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          PsiElement(identifier)('println')
          PsiElement(!)('!')
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement(()('(')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              PsiElement(STRING_LITERAL)('"Hello!, {}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsMacroReferenceImpl(MACRO_REFERENCE)
                PsiElement($)('$')
                RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                  PsiElement(identifier)('e')
            PsiElement())(')')
          PsiElement(;)(';')
        PsiWhiteSpace('\n    ')
        PsiElement(})('}')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacro2Impl(MACRO_2)
    PsiElement(macro)('macro')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('vec')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsMacroCaseImpl(MACRO_CASE)
      RsMacroPatternImpl(MACRO_PATTERN)
        PsiElement(()('(')
        PsiWhiteSpace(' ')
        RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
          RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
            PsiElement($)('$')
            PsiElement(()('(')
            PsiWhiteSpace(' ')
            RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
              RsMacroBindingImpl(MACRO_BINDING)
                PsiElement($)('$')
                RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                  PsiElement(identifier)('x')
                PsiElement(:)(':')
                PsiElement(identifier)('expr')
            PsiWhiteSpace(' ')
            PsiElement())(')')
            RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
              PsiElement(,)(',')
            PsiElement(*)('*')
        PsiWhiteSpace(' ')
        PsiElement())(')')
      PsiWhiteSpace(' ')
      PsiElement(=>)('=>')
      PsiWhiteSpace(' ')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement({)('{')
        PsiWhiteSpace('\n        ')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement({)('{')
            PsiWhiteSpace('\n            ')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              PsiElement(let)('let')
              PsiWhiteSpace(' ')
              PsiElement(mut)('mut')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('temp_vec')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('Vec')
              PsiElement(::)('::')
              PsiElement(identifier)('new')
              RsMacroExpansionImpl(MACRO_EXPANSION)
                PsiElement(()('(')
                RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                  <empty list>
                PsiElement())(')')
              PsiElement(;)(';')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                PsiElement($)('$')
                PsiElement(()('(')
                PsiWhiteSpace('\n                ')
                RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                  PsiElement(identifier)('temp_vec')
                  PsiElement(.)('.')
                  PsiElement(identifier)('push')
                  RsMacroExpansionImpl(MACRO_EXPANSION)
                    PsiElement(()('(')
                    RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                      RsMacroReferenceImpl(MACRO_REFERENCE)
                        PsiElement($)('$')
                        RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                          PsiElement(identifier)('x')
                    PsiElement())(')')
                  PsiElement(;)(';')
                PsiWhiteSpace('\n            ')
                PsiElement())(')')
                PsiElement(*)('*')
              PsiWhiteSpace('\n            ')
              PsiElement(identifier)('temp_vec')
            PsiWhiteSpace('\n        ')
            PsiElement(})('}')
        PsiWhiteSpace('\n    ')
        PsiElement(})('}')
    PsiElement(,)(',')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacro2Impl(MACRO_2)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(macro)('macro')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('compile_error')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsMacroCaseImpl(MACRO_CASE)
      RsMacroPatternImpl(MACRO_PATTERN)
        PsiElement(()('(')
        RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
          RsMacroBindingImpl(MACRO_BINDING)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('msg')
            PsiElement(:)(':')
            PsiElement(identifier)('expr')
        PsiElement())(')')
      PsiWhiteSpace(' ')
      PsiElement(=>)('=>')
      PsiWhiteSpace(' ')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement(()('(')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/* compiler built-in */')
            PsiWhiteSpace(' ')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              <empty list>
            PsiElement(})('}')
        PsiElement())(')')
    PsiElement(,)(',')
    PsiWhiteSpace('\n    ')
    RsMacroCaseImpl(MACRO_CASE)
      RsMacroPatternImpl(MACRO_PATTERN)
        PsiElement(()('(')
        RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
          RsMacroBindingImpl(MACRO_BINDING)
            PsiElement($)('$')
            RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
              PsiElement(identifier)('msg')
            PsiElement(:)(':')
            PsiElement(identifier)('expr')
          PsiElement(,)(',')
        PsiElement())(')')
      PsiWhiteSpace(' ')
      PsiElement(=>)('=>')
      PsiWhiteSpace(' ')
      RsMacroExpansionImpl(MACRO_EXPANSION)
        PsiElement(()('(')
        RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
          RsMacroExpansionImpl(MACRO_EXPANSION)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/* compiler built-in */')
            PsiWhiteSpace(' ')
            RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
              <empty list>
            PsiElement(})('}')
        PsiElement())(')')
    PsiElement(,)(',')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
