FILE
  PsiElement(shebang_line)('#!/she-bang line')
  PsiWhiteSpace('\n')
  PsiComment(<EOL_COMMENT>)('//inner attributes')
  PsiWhiteSpace('\n')
  RsInnerAttrImpl(INNER_ATTR)
    PsiElement(#)('#')
    PsiElement(!)('!')
    PsiElement([)('[')
    RsMetaItemImpl(META_ITEM)
      RsPathImpl(PATH)
        PsiElement(identifier)('crate_type')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"lib"')
    PsiElement(])(']')
  PsiWhiteSpace('\n')
  RsInnerAttrImpl(INNER_ATTR)
    PsiElement(#)('#')
    PsiElement(!)('!')
    PsiElement([)('[')
    RsMetaItemImpl(META_ITEM)
      RsPathImpl(PATH)
        PsiElement(identifier)('crate_name')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"rary"')
    PsiElement(])(']')
  PsiWhiteSpace('\n\n\n')
  RsModItemImpl(MOD_ITEM)
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('empty')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('main')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsInnerAttrImpl(INNER_ATTR)
        PsiElement(#)('#')
        PsiElement(!)('!')
        PsiElement([)('[')
        RsMetaItemImpl(META_ITEM)
          RsPathImpl(PATH)
            PsiElement(identifier)('crate_type')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"lib"')
        PsiElement(])(']')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsEnumItemImpl(ENUM_ITEM)
    PsiElement(enum)('enum')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('E')
    PsiWhiteSpace(' ')
    RsEnumBodyImpl(ENUM_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsEnumVariantImpl(ENUM_VARIANT)
        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)('test')
              PsiElement())(')')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('F')
        RsTupleFieldsImpl(TUPLE_FIELDS)
          PsiElement(()('(')
          RsTupleFieldDeclImpl(TUPLE_FIELD_DECL)
            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)('test')
                  PsiElement())(')')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                PsiElement(identifier)('i32')
          PsiElement())(')')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsConstantImpl(CONSTANT)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('empty_attr')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(const)('const')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T')
    PsiElement(:)(':')
    PsiWhiteSpace(' ')
    RsPathTypeImpl(PATH_TYPE)
      RsPathImpl(PATH)
        PsiElement(identifier)('i32')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsLitExprImpl(LIT_EXPR)
      PsiElement(INTEGER_LITERAL)('92')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('attrs_on_statements')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        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)('test')
              PsiElement())(')')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('x')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('92')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        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)('test')
              PsiElement())(')')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        RsLoopExprImpl(LOOP_EXPR)
          PsiElement(loop)('loop')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        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)('test')
              PsiElement())(')')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        RsBinaryExprImpl(BINARY_EXPR)
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(+)('+')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsStructLiteralImpl(STRUCT_LITERAL)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          RsStructLiteralBodyImpl(STRUCT_LITERAL_BODY)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsStructLiteralFieldImpl(STRUCT_LITERAL_FIELD)
              RsOuterAttrImpl(OUTER_ATTR)
                PsiElement(#)('#')
                PsiElement([)('[')
                RsMetaItemImpl(META_ITEM)
                  RsPathImpl(PATH)
                    PsiElement(identifier)('foo')
                PsiElement(])(']')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('foo')
              PsiElement(:)(':')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('92')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsStructItemImpl(STRUCT_ITEM)
    PsiElement(struct)('struct')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('S')
    RsTypeParameterListImpl(TYPE_PARAMETER_LIST)
      PsiElement(<)('<')
      RsLifetimeParameterImpl(LIFETIME_PARAMETER)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('foo')
          PsiElement(])(']')
        PsiElement(QUOTE_IDENTIFIER)(''a')
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsTypeParameterImpl(TYPE_PARAMETER)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('may_dangle')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('T')
      PsiElement(>)('>')
    PsiWhiteSpace(' ')
    RsBlockFieldsImpl(BLOCK_FIELDS)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('give_me_struct')
    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)('name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(#)('#')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement([)('[')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('allow')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('non_camel_case_types')
                  PsiElement())(')')
              PsiElement(])(']')
            PsiWhiteSpace('\n        ')
            PsiElement(struct)('struct')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('name')
            PsiElement(;)(';')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      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)('not')
            RsMetaItemArgsImpl(META_ITEM_ARGS)
              PsiElement(()('(')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('test')
              PsiElement())(')')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsPathImpl(PATH)
      PsiElement(identifier)('give_me_struct')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
        PsiElement(identifier)('hello_world')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('post')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"/"')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('data')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsLitExprImpl(LIT_EXPR)
              PsiElement(STRING_LITERAL)('"<todo_form>"')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('string_value')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsConstantImpl(CONSTANT)
    PsiElement(const)('const')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('C')
    PsiElement(:)(':')
    PsiWhiteSpace(' ')
    RsPathTypeImpl(PATH_TYPE)
      RsPathImpl(PATH)
        PsiElement(identifier)('i32')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsLitExprImpl(LIT_EXPR)
      PsiElement(INTEGER_LITERAL)('0')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    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)('attr')
            RsMetaItemArgsImpl(META_ITEM_ARGS)
              PsiElement(()('(')
              RsMetaItemImpl(META_ITEM)
                RsCompactTTImpl(COMPACT_TT)
                  PsiElement(identifier)('value')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  PsiElement(identifier)('C')
              PsiElement())(')')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('const_value')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          RsPathImpl(PATH)
            PsiElement(identifier)('py')
          PsiElement(::)('::')
          PsiElement(identifier)('class')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('path')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('cfg_attr')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('test')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('assert_instr')
            RsMetaItemArgsImpl(META_ITEM_ARGS)
              PsiElement(()('(')
              RsMetaItemImpl(META_ITEM)
                RsCompactTTImpl(COMPACT_TT)
                  PsiElement(identifier)('add_a')
                  PsiElement(.)('.')
                  PsiElement(identifier)('b')
              PsiElement())(')')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('custom_name')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('attr')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsCompactTTImpl(COMPACT_TT)
              PsiElement(identifier)('foo')
              PsiElement(::)('::')
              PsiElement({)('{')
              RsCompactTTImpl(COMPACT_TT)
                PsiElement(identifier)('bar')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('baz')
              PsiElement(})('}')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('qwe')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('arbitrary_token_tree')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
