FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('f1')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('attr1')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('attr2')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('pat')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('f2')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('attr')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('x')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsImplItemImpl(IMPL_ITEM)
    PsiElement(impl)('impl')
    PsiWhiteSpace(' ')
    RsPathTypeImpl(PATH_TYPE)
      RsPathImpl(PATH)
        PsiElement(identifier)('S')
    PsiWhiteSpace(' ')
    RsMembersImpl(MEMBERS)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f3')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(self)('self')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f4')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(&)('&')
            PsiElement(self)('self')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f5')
        RsTypeParameterListImpl(TYPE_PARAMETER_LIST)
          PsiElement(<)('<')
          RsLifetimeParameterImpl(LIFETIME_PARAMETER)
            PsiElement(QUOTE_IDENTIFIER)(''a')
          PsiElement(>)('>')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(&)('&')
            PsiElement(mut)('mut')
            PsiWhiteSpace(' ')
            PsiElement(self)('self')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f6')
        RsTypeParameterListImpl(TYPE_PARAMETER_LIST)
          PsiElement(<)('<')
          RsLifetimeParameterImpl(LIFETIME_PARAMETER)
            PsiElement(QUOTE_IDENTIFIER)(''a')
          PsiElement(>)('>')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(&)('&')
            RsLifetimeImpl(LIFETIME)
              PsiElement(QUOTE_IDENTIFIER)(''a')
            PsiWhiteSpace(' ')
            PsiElement(self)('self')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f7')
        RsTypeParameterListImpl(TYPE_PARAMETER_LIST)
          PsiElement(<)('<')
          RsLifetimeParameterImpl(LIFETIME_PARAMETER)
            PsiElement(QUOTE_IDENTIFIER)(''a')
          PsiElement(>)('>')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(&)('&')
            RsLifetimeImpl(LIFETIME)
              PsiElement(QUOTE_IDENTIFIER)(''a')
            PsiWhiteSpace(' ')
            PsiElement(mut)('mut')
            PsiWhiteSpace(' ')
            PsiElement(self)('self')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsValueParameterImpl(VALUE_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                PsiElement(identifier)('S')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsValueParameterImpl(VALUE_PARAMETER)
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('y')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                PsiElement(identifier)('S')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f8')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(self)('self')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                PsiElement(Self)('Self')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f9')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsSelfParameterImpl(SELF_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            PsiElement(self)('self')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                PsiElement(identifier)('S')
                RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
                  PsiElement(<)('<')
                  RsPathTypeImpl(PATH_TYPE)
                    RsPathImpl(PATH)
                      PsiElement(Self)('Self')
                  PsiElement(>)('>')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsTraitItemImpl(TRAIT_ITEM)
    PsiElement(trait)('trait')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T')
    PsiWhiteSpace(' ')
    RsMembersImpl(MEMBERS)
      PsiElement({)('{')
      PsiWhiteSpace(' ')
      RsFunctionImpl(FUNCTION)
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('f10')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          RsValueParameterImpl(VALUE_PARAMETER)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('attr')
              PsiElement(])(']')
            PsiWhiteSpace(' ')
            RsPathTypeImpl(PATH_TYPE)
              RsPathImpl(PATH)
                PsiElement(identifier)('S')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsForeignModItemImpl(FOREIGN_MOD_ITEM)
    RsExternAbiImpl(EXTERN_ABI)
      PsiElement(extern)('extern')
      PsiWhiteSpace(' ')
      RsLitExprImpl(LIT_EXPR)
        PsiElement(STRING_LITERAL)('"C"')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    RsFunctionImpl(FUNCTION)
      PsiElement(fn)('fn')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('f11')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        RsValueParameterImpl(VALUE_PARAMETER)
          RsOuterAttrImpl(OUTER_ATTR)
            PsiElement(#)('#')
            PsiElement([)('[')
            RsMetaItemImpl(META_ITEM)
              RsPathImpl(PATH)
                PsiElement(identifier)('attr')
            PsiElement(])(']')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('x')
          PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPathTypeImpl(PATH_TYPE)
            RsPathImpl(PATH)
              PsiElement(identifier)('S')
        PsiElement(,)(',')
        PsiWhiteSpace(' ')
        RsVariadicImpl(VARIADIC)
          RsOuterAttrImpl(OUTER_ATTR)
            PsiElement(#)('#')
            PsiElement([)('[')
            RsMetaItemImpl(META_ITEM)
              RsPathImpl(PATH)
                PsiElement(identifier)('attr')
            PsiElement(])(']')
          PsiWhiteSpace(' ')
          PsiElement(...)('...')
        PsiElement())(')')
      PsiElement(;)(';')
    PsiWhiteSpace('\n')
    PsiElement(})('}')
