FILE
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('peg')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('parser_definition')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement(()('(')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(RAW_STRING_LITERAL)('r#"\n"#')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('vec')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      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')
  RsMacroImpl(MACRO)
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('comments')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            <empty list>
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiComment(<OUTER_EOL_DOC_COMMENT>)
              PsiElement(<DOC_GAP>)('///')
              PsiWhiteSpace(' ')
              PsiElement(<DOC_DATA>)('doc comment')
            PsiWhiteSpace('\n        ')
            PsiElement(mod)('mod')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('foo')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                <empty list>
              PsiElement())(')')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiComment(<OUTER_BLOCK_DOC_COMMENT>)
                  PsiElement(<DOC_GAP>)('/**')
                  PsiElement(<DOC_DATA>)(' doc comment 2 ')
                  PsiElement(<DOC_GAP>)('*/')
                PsiWhiteSpace('\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('bar')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement(})('}')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('default')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('ty')
              PsiElement(:)(':')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('ty')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          PsiComment(<BLOCK_COMMENT>)('/* ANYTHING */')
          PsiWhiteSpace(' ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            <empty list>
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foobar')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(self)('self')
              PsiElement(:)(':')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('ident')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('  ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            <empty list>
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('default')
    PsiElement(!)('!')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement(()('(')
      RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
        PsiElement(identifier)('String')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('thread_local')
    PsiElement(!)('!')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement(()('(')
      PsiElement(static)('static')
      PsiWhiteSpace(' ')
      RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
        PsiElement(identifier)('HANDLE')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
        PsiElement(identifier)('Handle')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
        PsiElement(identifier)('Handle')
      RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
        PsiElement(()('(')
        PsiElement(INTEGER_LITERAL)('0')
        PsiElement())(')')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('cfg')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('foo')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement(()('(')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('include')
    PsiElement(!)('!')
    RsIncludeMacroArgumentImpl(INCLUDE_MACRO_ARGUMENT)
      PsiElement(()('(')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"path/to/rust/file.rs"')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsConstantImpl(CONSTANT)
    PsiElement(const)('const')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('STR')
    PsiElement(:)(':')
    PsiWhiteSpace(' ')
    RsRefLikeTypeImpl(REF_LIKE_TYPE)
      PsiElement(&)('&')
      RsPathTypeImpl(PATH_TYPE)
        RsPathImpl(PATH)
          PsiElement(identifier)('str')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsMacroExprImpl(MACRO_EXPR)
      RsMacroCallImpl(MACRO_CALL)
        RsPathImpl(PATH)
          PsiElement(identifier)('include_str')
        PsiElement(!)('!')
        RsIncludeMacroArgumentImpl(INCLUDE_MACRO_ARGUMENT)
          PsiElement(()('(')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"foo.in"')
          PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsConstantImpl(CONSTANT)
    PsiElement(const)('const')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('BYTES')
    PsiElement(:)(':')
    PsiWhiteSpace(' ')
    RsRefLikeTypeImpl(REF_LIKE_TYPE)
      PsiElement(&)('&')
      RsArrayTypeImpl(ARRAY_TYPE)
        PsiElement([)('[')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('u8')
        PsiElement(])(']')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsMacroExprImpl(MACRO_EXPR)
      RsMacroCallImpl(MACRO_CALL)
        RsPathImpl(PATH)
          PsiElement(identifier)('include_bytes')
        PsiElement(!)('!')
        RsIncludeMacroArgumentImpl(INCLUDE_MACRO_ARGUMENT)
          PsiElement(()('(')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"data.data"')
          PsiElement(,)(',')
          PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('include')
    PsiElement(!)('!')
    RsIncludeMacroArgumentImpl(INCLUDE_MACRO_ARGUMENT)
      PsiElement(()('(')
      RsMacroExprImpl(MACRO_EXPR)
        RsMacroCallImpl(MACRO_CALL)
          RsPathImpl(PATH)
            PsiElement(identifier)('concat')
          PsiElement(!)('!')
          RsConcatMacroArgumentImpl(CONCAT_MACRO_ARGUMENT)
            PsiElement(()('(')
            RsMacroExprImpl(MACRO_EXPR)
              RsMacroCallImpl(MACRO_CALL)
                RsPathImpl(PATH)
                  PsiElement(identifier)('env')
                PsiElement(!)('!')
                RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
                  PsiElement(()('(')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(STRING_LITERAL)('"OUT_DIR"')
                  PsiElement())(')')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            RsLitExprImpl(LIT_EXPR)
              PsiElement(STRING_LITERAL)('"/bindings.rs"')
            PsiElement())(')')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      RsPathImpl(PATH)
        PsiElement(identifier)('std')
      PsiElement(::)('::')
      PsiElement(identifier)('include')
    PsiElement(!)('!')
    RsIncludeMacroArgumentImpl(INCLUDE_MACRO_ARGUMENT)
      PsiElement(()('(')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"path/to/rust/file.rs"')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      RsPathImpl(PATH)
        PsiElement(::)('::')
        PsiElement(identifier)('std')
      PsiElement(::)('::')
      PsiElement(identifier)('include')
    PsiElement(!)('!')
    RsIncludeMacroArgumentImpl(INCLUDE_MACRO_ARGUMENT)
      PsiElement(()('(')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"path/to/rust/file.rs"')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      RsPathImpl(PATH)
        PsiElement(crate)('crate')
      PsiElement(::)('::')
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      RsPathImpl(PATH)
        PsiElement(self)('self')
      PsiElement(::)('::')
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      RsPathImpl(PATH)
        PsiElement(super)('super')
      PsiElement(::)('::')
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCallImpl(MACRO_CALL)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('cfg')
            RsMetaItemArgsImpl(META_ITEM_ARGS)
              PsiElement(()('(')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('foo')
              PsiElement())(')')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        RsPathImpl(PATH)
          PsiElement(identifier)('foo')
        PsiElement(!)('!')
        PsiWhiteSpace(' ')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('a')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('0')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// needed to check that we parsed the call as a stmt')
      PsiWhiteSpace('\n\n    ')
      RsMacroImpl(MACRO)
        PsiElement(identifier)('macro_rules')
        PsiElement(!)('!')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('bar')
        PsiWhiteSpace(' ')
        RsMacroBodyImpl(MACRO_BODY)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroCaseImpl(MACRO_CASE)
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                <empty list>
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(=>)('=>')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                <empty list>
              PsiElement(})('}')
          PsiElement(;)(';')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            RsBindingModeImpl(BINDING_MODE)
              PsiElement(mut)('mut')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('macro_rules')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('0')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('macro_rules')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(+=)('+=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsMacroExprImpl(MACRO_EXPR)
            RsMacroCallImpl(MACRO_CALL)
              RsPathImpl(PATH)
                PsiElement(identifier)('foo')
              PsiElement(!)('!')
              RsMacroArgumentImpl(MACRO_ARGUMENT)
                PsiElement(()('(')
                PsiElement())(')')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(+)('+')
          PsiWhiteSpace(' ')
          RsMacroExprImpl(MACRO_EXPR)
            RsMacroCallImpl(MACRO_CALL)
              RsPathImpl(PATH)
                PsiElement(identifier)('foo')
              PsiElement(!)('!')
              RsMacroArgumentImpl(MACRO_ARGUMENT)
                PsiElement(()('(')
                PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n\n    ')
      PsiComment(<EOL_COMMENT>)('// -- vec macro ---')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('v1')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('vec')
            PsiElement(!)('!')
            RsVecMacroArgumentImpl(VEC_MACRO_ARGUMENT)
              PsiElement([)('[')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('2')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('3')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('v2')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('vec')
            PsiElement(!)('!')
            RsVecMacroArgumentImpl(VEC_MACRO_ARGUMENT)
              PsiElement([)('[')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
              PsiElement(;)(';')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('10')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('v')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('Vec')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  PsiElement(identifier)('i32')
              PsiElement(>)('>')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('vec')
            PsiElement(!)('!')
            RsVecMacroArgumentImpl(VEC_MACRO_ARGUMENT)
              PsiElement([)('[')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('vv')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('Vec')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  PsiElement(identifier)('i32')
              PsiElement(>)('>')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('vec')
            PsiElement(!)('!')
            RsVecMacroArgumentImpl(VEC_MACRO_ARGUMENT)
              PsiElement([)('[')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('vvv')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('Vec')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  PsiElement(identifier)('i32')
              PsiElement(>)('>')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('vec')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsVecMacroArgumentImpl(VEC_MACRO_ARGUMENT)
              PsiElement([)('[')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('vec')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('Foo')
              RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom vec macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ----------------')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// --- format macros ---')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('println')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('92')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('format')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{argument}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                PsiElement(identifier)('argument')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"test"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('  ')
      PsiComment(<EOL_COMMENT>)('// => "test"')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('format_args')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{name} {}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                PsiElement(identifier)('name')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('2')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('    ')
      PsiComment(<EOL_COMMENT>)('// => "2 1"')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('format')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement([)('[')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"hello {}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"world!"')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('format')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement({)('{')
              PsiWhiteSpace('\n        ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"x = {}, y = {y}"')
              PsiElement(,)(',')
              PsiWhiteSpace('\n        ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('10')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                PsiElement(identifier)('y')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('30')
              PsiWhiteSpace('\n    ')
              PsiElement(})('}')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('panic')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"division by zero"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('unimplemented')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{} {} {}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('2')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('3')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('todo')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"it's too {epithet} to implement"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                PsiElement(identifier)('epithet')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"boring"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('println')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('92')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('println')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('92')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(::)('::')
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('println')
            PsiElement(!)('!')
            RsFormatMacroArgumentImpl(FORMAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"{}"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('92')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call beginning with double colon')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('eprintln')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('Foo')
              RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom format macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// -------------------')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// --- expr macros ---')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('dbg')
            PsiElement(!)('!')
            RsExprMacroArgumentImpl(EXPR_MACRO_ARGUMENT)
              PsiElement(()('(')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('dbg')
            PsiElement(!)('!')
            RsExprMacroArgumentImpl(EXPR_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"Some text"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('dbg')
            PsiElement(!)('!')
            RsExprMacroArgumentImpl(EXPR_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('123')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(+)('+')
                PsiWhiteSpace(' ')
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('567')
              PsiElement(,)(',')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('dbg')
            PsiElement(!)('!')
            RsExprMacroArgumentImpl(EXPR_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('123')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('dbg')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsExprMacroArgumentImpl(EXPR_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('123')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('dbg')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('Foo')
              RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom expr macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ------------------')
      PsiWhiteSpace('\n\n    ')
      RsMacroCallImpl(MACRO_CALL)
        PsiComment(<EOL_COMMENT>)('// --- log macros ---')
        PsiWhiteSpace('\n    ')
        RsPathImpl(PATH)
          PsiElement(identifier)('error')
        PsiElement(!)('!')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement(()('(')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsMacroCallImpl(MACRO_CALL)
        RsPathImpl(PATH)
          PsiElement(identifier)('debug')
        PsiElement(!)('!')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement(()('(')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"{a} {c} {b}"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('a')
          PsiElement(=)('=')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"a"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('b')
          PsiElement(=)('=')
          PsiElement(CHAR_LITERAL)(''b'')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('c')
          PsiElement(=)('=')
          PsiElement(INTEGER_LITERAL)('3')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('  ')
      RsMacroCallImpl(MACRO_CALL)
        PsiComment(<EOL_COMMENT>)('// => "a 3 b"')
        PsiWhiteSpace('\n    ')
        RsPathImpl(PATH)
          PsiElement(identifier)('trace')
        PsiElement(!)('!')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement(()('(')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('target')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"smbc"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"open_with {:?}"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('options')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsMacroCallImpl(MACRO_CALL)
        RsPathImpl(PATH)
          RsPathImpl(PATH)
            PsiElement(identifier)('log')
          PsiElement(::)('::')
          PsiElement(identifier)('warn')
        PsiElement(!)('!')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement(()('(')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('target')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"smbc"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"open_with {:?}"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('options')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      RsMacroCallImpl(MACRO_CALL)
        PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
        PsiWhiteSpace('\n    ')
        RsPathImpl(PATH)
          RsPathImpl(PATH)
            PsiElement(identifier)('log')
          PsiElement(::)('::')
          PsiElement(identifier)('info')
        PsiWhiteSpace(' ')
        PsiComment(<BLOCK_COMMENT>)('/*comment*/')
        PsiWhiteSpace(' ')
        PsiElement(!)('!')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement(()('(')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('target')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"smbc"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"open_with {:?}"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('options')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      RsMacroCallImpl(MACRO_CALL)
        PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
        PsiWhiteSpace('\n    ')
        RsPathImpl(PATH)
          PsiElement(identifier)('debug')
        PsiElement(!)('!')
        RsMacroArgumentImpl(MACRO_ARGUMENT)
          PsiElement(()('(')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('log')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"debug values"')
          PsiElement(;)(';')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"x"')
          PsiWhiteSpace(' ')
          PsiElement(=>)('=>')
          PsiWhiteSpace(' ')
          PsiElement(INTEGER_LITERAL)('1')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"y"')
          PsiWhiteSpace(' ')
          PsiElement(=>)('=>')
          PsiWhiteSpace(' ')
          PsiElement(-)('-')
          PsiElement(INTEGER_LITERAL)('1')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom log macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ------------------')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// --- assert macros ---')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('a')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('42u32')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('b')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('43u32')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement([)('[')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement({)('{')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert_eq')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('a')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"Some text"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert_ne')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('a')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"Some text"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"Some text"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"Text {} {} syntax"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"with"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(STRING_LITERAL)('"format"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('debug_assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert_eq')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('a')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('debug_assert_eq')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('a')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert_ne')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('a')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('debug_assert_ne')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('a')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsFormatMacroArgImpl(FORMAT_MACRO_ARG)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('assert')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('assert')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsAssertMacroArgumentImpl(ASSERT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsBinaryExprImpl(BINARY_EXPR)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('a')
                PsiWhiteSpace(' ')
                RsBinaryOpImpl(BINARY_OP)
                  PsiElement(==)('==')
                PsiWhiteSpace(' ')
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('b')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert_eq')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('Foo')
              RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom assert macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ---------------------')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// --- concat macros')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('concat')
            PsiElement(!)('!')
            RsConcatMacroArgumentImpl(CONCAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"abc"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('concat')
            PsiElement(!)('!')
            RsConcatMacroArgumentImpl(CONCAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"abc"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"def"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('concat')
            PsiElement(!)('!')
            RsConcatMacroArgumentImpl(CONCAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"abc"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"def"')
              PsiElement(,)(',')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('concat')
            PsiElement(!)('!')
            RsConcatMacroArgumentImpl(CONCAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"abc"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"def"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('concat')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsConcatMacroArgumentImpl(CONCAT_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"abc"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"def"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('concat')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('Foo')
              RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom concat macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ------------------')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// - env macros')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('env')
            PsiElement(!)('!')
            RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"FOO"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('env')
            PsiElement(!)('!')
            RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"FOO"')
              PsiElement(,)(',')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('env')
            PsiElement(!)('!')
            RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"FOO"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"error message"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('env')
            PsiElement(!)('!')
            RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"FOO"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"error message"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('env')
            PsiElement(!)('!')
            RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"FOO"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('env')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsEnvMacroArgumentImpl(ENV_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(STRING_LITERAL)('"FOO"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('env')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('Foo')
              RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// custom env macro')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ------------------')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// - asm macros')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOptionsImpl(ASM_MACRO_OPTIONS)
                  PsiElement(identifier)('options')
                  PsiElement(()('(')
                  RsAsmMacroOptionImpl(ASM_MACRO_OPTION)
                    PsiElement(identifier)('pure')
                  PsiElement(,)(',')
                  PsiWhiteSpace(' ')
                  RsAsmMacroOptionImpl(ASM_MACRO_OPTION)
                    PsiElement(identifier)('nomem')
                  PsiElement(,)(',')
                  PsiWhiteSpace(' ')
                  RsAsmMacroOptionImpl(ASM_MACRO_OPTION)
                    PsiElement(identifier)('nostack')
                  PsiElement())(')')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('5')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('5')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('sym')
                  PsiWhiteSpace(' ')
                  RsPathImpl(PATH)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('foo')
                    PsiElement(::)('::')
                    PsiElement(identifier)('bar')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  PsiElement(identifier)('sym')
                  PsiWhiteSpace(' ')
                  RsPathImpl(PATH)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('foo')
                    PsiElement(::)('::')
                    PsiElement(identifier)('bar')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('6')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsBinaryExprImpl(BINARY_EXPR)
                    RsPathExprImpl(PATH_EXPR)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('A')
                    PsiWhiteSpace(' ')
                    RsBinaryOpImpl(BINARY_OP)
                      PsiElement(+)('+')
                    PsiWhiteSpace(' ')
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('1')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  RsAsmMacroRegOperandImpl(ASM_MACRO_REG_OPERAND)
                    RsAsmMacroRegDirImpl(ASM_MACRO_REG_DIR)
                      PsiElement(in)('in')
                    PsiElement(()('(')
                    RsAsmMacroRegSpecImpl(ASM_MACRO_REG_SPEC)
                      PsiElement(identifier)('reg')
                    PsiElement())(')')
                    PsiWhiteSpace(' ')
                    RsAsmMacroRegTargetImpl(ASM_MACRO_REG_TARGET)
                      RsPathExprImpl(PATH_EXPR)
                        RsPathImpl(PATH)
                          PsiElement(identifier)('x')
                    PsiWhiteSpace(' ')
                    PsiElement(=>)('=>')
                    PsiWhiteSpace(' ')
                    RsAsmMacroRegTargetImpl(ASM_MACRO_REG_TARGET)
                      RsPathExprImpl(PATH_EXPR)
                        RsPathImpl(PATH)
                          PsiElement(identifier)('y')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  RsAsmMacroRegOperandImpl(ASM_MACRO_REG_OPERAND)
                    RsAsmMacroRegDirImpl(ASM_MACRO_REG_DIR)
                      PsiElement(identifier)('out')
                    PsiElement(()('(')
                    RsAsmMacroRegSpecImpl(ASM_MACRO_REG_SPEC)
                      PsiElement(STRING_LITERAL)('"eax"')
                    PsiElement())(')')
                    PsiWhiteSpace(' ')
                    RsAsmMacroRegTargetImpl(ASM_MACRO_REG_TARGET)
                      PsiElement(_)('_')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('5')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('b')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  PsiElement(identifier)('sym')
                  PsiWhiteSpace(' ')
                  RsPathImpl(PATH)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('foo')
                    PsiElement(::)('::')
                    PsiElement(identifier)('bar')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('c')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  RsAsmMacroRegOperandImpl(ASM_MACRO_REG_OPERAND)
                    RsAsmMacroRegDirImpl(ASM_MACRO_REG_DIR)
                      PsiElement(in)('in')
                    PsiElement(()('(')
                    RsAsmMacroRegSpecImpl(ASM_MACRO_REG_SPEC)
                      PsiElement(identifier)('reg')
                    PsiElement())(')')
                    PsiWhiteSpace(' ')
                    RsAsmMacroRegTargetImpl(ASM_MACRO_REG_TARGET)
                      PsiElement(_)('_')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                RsAsmMacroOperandImpl(ASM_MACRO_OPERAND)
                  PsiElement(identifier)('d')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  RsAsmMacroRegOperandImpl(ASM_MACRO_REG_OPERAND)
                    RsAsmMacroRegDirImpl(ASM_MACRO_REG_DIR)
                      PsiElement(identifier)('out')
                    PsiElement(()('(')
                    RsAsmMacroRegSpecImpl(ASM_MACRO_REG_SPEC)
                      PsiElement(identifier)('reg')
                    PsiElement())(')')
                    PsiWhiteSpace(' ')
                    RsAsmMacroRegTargetImpl(ASM_MACRO_REG_TARGET)
                      RsPathExprImpl(PATH_EXPR)
                        RsPathImpl(PATH)
                          PsiElement(identifier)('a')
                    PsiWhiteSpace(' ')
                    PsiElement(=>)('=>')
                    PsiWhiteSpace(' ')
                    RsAsmMacroRegTargetImpl(ASM_MACRO_REG_TARGET)
                      PsiElement(_)('_')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('asm')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('std')
              PsiElement(::)('::')
              PsiElement(identifier)('asm')
            PsiWhiteSpace(' ')
            PsiComment(<BLOCK_COMMENT>)('/*comment*/')
            PsiWhiteSpace(' ')
            PsiElement(!)('!')
            RsAsmMacroArgumentImpl(ASM_MACRO_ARGUMENT)
              PsiElement(()('(')
              RsAsmMacroArgImpl(ASM_MACRO_ARG)
                PsiElement(STRING_LITERAL)('"nop"')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiComment(<EOL_COMMENT>)('// fully qualified macro call with comment')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// ------------------')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
