FILE
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('link')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('name')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsLitExprImpl(LIT_EXPR)
              PsiElement(STRING_LITERAL)('"objc"')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsFunctionImpl(FUNCTION)
      PsiElement(fn)('fn')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('foo')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('name')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsRefLikeTypeImpl(REF_LIKE_TYPE)
            PsiElement(*)('*')
            PsiElement(const)('const')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                RsPathImpl(PATH)
                  PsiElement(identifier)('libc')
                PsiElement(::)('::')
                PsiElement(identifier)('c_uchar')
        PsiElement())(')')
      PsiElement(;)(';')
    PsiWhiteSpace('\n    ')
    RsFunctionImpl(FUNCTION)
      PsiElement(fn)('fn')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('bar')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('a')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('i32')
        PsiElement(,)(',')
        PsiWhiteSpace('  ')
        RsVariadicImpl(VARIADIC)
          PsiElement(...)('...')
        PsiElement())(')')
      PsiWhiteSpace(' ')
      RsRetTypeImpl(RET_TYPE)
        PsiElement(->)('->')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      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)('test')
            PsiElement())(')')
        PsiElement(])(']')
      PsiWhiteSpace('\n    ')
      RsVisImpl(VIS)
        PsiElement(pub)('pub')
      PsiWhiteSpace(' ')
      PsiElement(fn)('fn')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('baz')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('b')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('i64')
        PsiElement(,)(',')
        PsiWhiteSpace(' ')
        PsiElement())(')')
      PsiElement(;)(';')
    PsiWhiteSpace('\n\n    ')
    RsConstantImpl(CONSTANT)
      RsOuterAttrImpl(OUTER_ATTR)
        PsiElement(#)('#')
        PsiElement([)('[')
        RsMetaItemImpl(META_ITEM)
          RsPathImpl(PATH)
            PsiElement(identifier)('doc')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(STRING_LITERAL)('"Hello"')
        PsiElement(])(']')
      PsiWhiteSpace('\n    ')
      RsVisImpl(VIS)
        PsiElement(pub)('pub')
      PsiWhiteSpace(' ')
      PsiElement(static)('static')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('X')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      RsPathTypeImpl(PATH_TYPE)
        RsPathImpl(PATH)
          PsiElement(identifier)('i32')
      PsiElement(;)(';')
    PsiWhiteSpace('\n\n    ')
    RsTypeAliasImpl(TYPE_ALIAS)
      RsVisImpl(VIS)
        PsiElement(pub)('pub')
      PsiWhiteSpace(' ')
      PsiElement(type)('type')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('Y')
      PsiElement(;)(';')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"C"')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"R\u{0075}st"')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(RAW_STRING_LITERAL)('r"system"')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(CHAR_LITERAL)(''C'')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace(' ')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    PsiComment(<EOL_COMMENT>)('// semantically invalid')
    PsiWhiteSpace('\n')
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace(' ')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    PsiComment(<EOL_COMMENT>)('// semantically invalid')
    PsiWhiteSpace('\n')
    PsiElement(unsafe)('unsafe')
    PsiWhiteSpace(' ')
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace(' ')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    PsiComment(<EOL_COMMENT>)('// semantically invalid')
    PsiWhiteSpace('\n')
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(unsafe)('unsafe')
    PsiWhiteSpace(' ')
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace(' ')
  PsiComment(<EOL_COMMENT>)('// semantically invalid')
