FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsTypeParameterListImpl(TYPE_PARAMETER_LIST)
      PsiElement(<)('<')
      RsLifetimeParameterImpl(LIFETIME_PARAMETER)
        PsiElement(QUOTE_IDENTIFIER)(''a')
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsLifetimeParameterImpl(LIFETIME_PARAMETER)
        PsiElement(QUOTE_IDENTIFIER)(''b')
      PsiElement(>)('>')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsWhereClauseImpl(WHERE_CLAUSE)
      PsiElement(where)('where')
  PsiWhiteSpace(' ')
  PsiElement(for)('for')
  PsiElement(<)('<')
  PsiElement(QUOTE_IDENTIFIER)(''c')
  PsiElement(>)('>')
  PsiWhiteSpace(' ')
  PsiElement(QUOTE_IDENTIFIER)(''a')
  PsiWhiteSpace(' ')
  PsiErrorElement:'+' expected, got ':'
    PsiElement(:)(':')
  PsiElement(DUMMY_BLOCK)
    PsiWhiteSpace(' ')
    PsiElement(QUOTE_IDENTIFIER)(''b')
  PsiWhiteSpace(' ')
  PsiElement(DUMMY_BLOCK)
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsUnitTypeImpl(UNIT_TYPE)
      PsiElement(()('(')
      PsiElement())(')')
    PsiErrorElement:';' or where expected, got '+'
      <empty list>
  PsiWhiteSpace(' ')
  PsiElement(+)('+')
  PsiWhiteSpace(' ')
  PsiElement(identifier)('A')
  PsiErrorElement:'!' or '::' expected, got ';'
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('X')
  PsiWhiteSpace(' ')
  PsiElement(=)('=')
  PsiWhiteSpace(' ')
  PsiErrorElement:<type> expected, got ';'
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('bar')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('a')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('b')
      PsiWhiteSpace(' ')
      PsiElement(as)('as')
      PsiErrorElement:<type> expected, got ';'
        <empty list>
      PsiWhiteSpace(' ')
      RsEmptyStmtImpl(EMPTY_STMT)
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T1')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsArrayTypeImpl(ARRAY_TYPE)
      PsiElement([)('[')
      PsiErrorElement:<type> expected, got 'type'
        <empty list>
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T2')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsRefLikeTypeImpl(REF_LIKE_TYPE)
      PsiElement(&)('&')
      PsiErrorElement:<type>, QUOTE_IDENTIFIER or mut expected, got ';'
        <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T3')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsRefLikeTypeImpl(REF_LIKE_TYPE)
      PsiElement(*)('*')
      PsiErrorElement:<type>, const or mut expected, got ';'
        <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T4')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsForInTypeImpl(FOR_IN_TYPE)
      RsForLifetimesImpl(FOR_LIFETIMES)
        PsiElement(for)('for')
        PsiElement(<)('<')
        PsiErrorElement:<bound>, <lifetime parameter> or '>' expected, got ';'
          <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T5')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsFnPointerTypeImpl(FN_POINTER_TYPE)
      PsiElement(fn)('fn')
      PsiErrorElement:'(' expected, got ';'
        <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T6')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsFnPointerTypeImpl(FN_POINTER_TYPE)
      PsiElement(fn)('fn')
      RsValueParameterListImpl(VALUE_PARAMETER_LIST)
        PsiElement(()('(')
        PsiErrorElement:')' or <anon parameter> expected, got ';'
          <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T7')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsFnPointerTypeImpl(FN_POINTER_TYPE)
      PsiElement(unsafe)('unsafe')
      PsiWhiteSpace(' ')
      PsiElement(fn)('fn')
      PsiErrorElement:'(' expected, got ';'
        <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T8')
    PsiWhiteSpace(' ')
    PsiElement(=)('=')
    PsiWhiteSpace(' ')
    RsFnPointerTypeImpl(FN_POINTER_TYPE)
      RsExternAbiImpl(EXTERN_ABI)
        PsiElement(extern)('extern')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(STRING_LITERAL)('"C"')
      PsiWhiteSpace(' ')
      PsiElement(fn)('fn')
      PsiErrorElement:'(' expected, got ';'
        <empty list>
    PsiElement(;)(';')
  PsiWhiteSpace('\n')
  RsTypeAliasImpl(TYPE_ALIAS)
    PsiElement(type)('type')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T9')
  PsiWhiteSpace(' ')
  PsiElement(=)('=')
  PsiErrorElement:'!', '(', <macro call>, <path start>, <polybound>, <ref like type>, '[', _, extern, for, impl or unsafe expected, got 'extern'
    <empty list>
  PsiWhiteSpace(' ')
  PsiElement(extern)('extern')
  PsiWhiteSpace(' ')
  PsiElement(STRING_LITERAL)('"C"')
  PsiWhiteSpace(' ')
  PsiErrorElement:fn or '{' expected, got ';'
    PsiElement(;)(';')
