FILE
  RsModItemImpl(MOD_ITEM)
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('arith')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n\n    ')
    RsFunctionImpl(FUNCTION)
      PsiElement(fn)('fn')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('add')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('x')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('i32')
        PsiElement(,)(',')
        PsiWhiteSpace(' ')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('y')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('i32')
        PsiElement())(')')
      PsiWhiteSpace(' ')
      RsRetTypeImpl(RET_TYPE)
        PsiElement(->)('->')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiWhiteSpace(' ')
      RsBlockImpl(BLOCK)
        PsiElement({)('{')
        PsiWhiteSpace('\n      ')
        RsExprStmtImpl(EXPR_STMT)
          RsRetExprImpl(RET_EXPR)
            PsiElement(return)('return')
            PsiWhiteSpace(' ')
            RsBinaryExprImpl(BINARY_EXPR)
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiWhiteSpace(' ')
              RsBinaryOpImpl(BINARY_OP)
                PsiElement(+)('+')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('y')
          PsiElement(;)(';')
        PsiWhiteSpace('\n    ')
        PsiElement(})('}')
    PsiWhiteSpace('\n\n    ')
    RsFunctionImpl(FUNCTION)
      PsiElement(fn)('fn')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('mul')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('x')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('i32')
        PsiElement(,)(',')
        PsiWhiteSpace(' ')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('y')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('i32')
        PsiElement())(')')
      PsiWhiteSpace(' ')
      RsRetTypeImpl(RET_TYPE)
        PsiElement(->)('->')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiWhiteSpace(' ')
      RsBlockImpl(BLOCK)
        PsiElement({)('{')
        PsiWhiteSpace('\n      ')
        RsExprStmtImpl(EXPR_STMT)
          RsBinaryExprImpl(BINARY_EXPR)
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                PsiElement(identifier)('x')
            PsiWhiteSpace(' ')
            RsBinaryOpImpl(BINARY_OP)
              PsiElement(*)('*')
            PsiWhiteSpace(' ')
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                PsiElement(identifier)('y')
          PsiElement(;)(';')
        PsiWhiteSpace('\n    ')
        PsiElement(})('}')
    PsiWhiteSpace('\n\n    ')
    RsModDeclItemImpl(MOD_DECL_ITEM)
      PsiElement(mod)('mod')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('sub_mod_decl')
      PsiElement(;)(';')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n\n')
  RsModItemImpl(MOD_ITEM)
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('empty')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n\n')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsModItemImpl(MOD_ITEM)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('pub_mod')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsModItemImpl(MOD_ITEM)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
      RsVisRestrictionImpl(VIS_RESTRICTION)
        PsiElement(()('(')
        RsPathImpl(PATH)
          PsiElement(crate)('crate')
        PsiElement())(')')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('pub_crate_mod')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsModItemImpl(MOD_ITEM)
    PsiElement(unsafe)('unsafe')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('unsafe_crate_mod')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace(' ')
  RsModItemImpl(MOD_ITEM)
    PsiComment(<EOL_COMMENT>)('// semantically invalid')
    PsiWhiteSpace('\n')
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(unsafe)('unsafe')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('pub_unsafe_crate_mod')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace(' ')
  PsiComment(<EOL_COMMENT>)('// semantically invalid')
  PsiWhiteSpace('\n\n')
  RsModDeclItemImpl(MOD_DECL_ITEM)
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('mod_decl')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsModDeclItemImpl(MOD_DECL_ITEM)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('pub_mod_decl')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsModDeclItemImpl(MOD_DECL_ITEM)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
      RsVisRestrictionImpl(VIS_RESTRICTION)
        PsiElement(()('(')
        RsPathImpl(PATH)
          PsiElement(crate)('crate')
        PsiElement())(')')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('pub_crate_mod_decl')
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsModDeclItemImpl(MOD_DECL_ITEM)
    PsiElement(unsafe)('unsafe')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('unsafe_mod_decl')
    PsiElement(;)(';')
  PsiWhiteSpace(' ')
  RsModDeclItemImpl(MOD_DECL_ITEM)
    PsiComment(<EOL_COMMENT>)('// semantically invalid')
    PsiWhiteSpace('\n')
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(unsafe)('unsafe')
    PsiWhiteSpace(' ')
    PsiElement(mod)('mod')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('pub_unsafe_mod_decl')
    PsiElement(;)(';')
  PsiWhiteSpace(' ')
  PsiComment(<EOL_COMMENT>)('// semantically invalid')
