FILE
  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')
      PsiWhiteSpace(' ')
      PsiElement())(')')
    PsiErrorElement:'->', ';' or where expected, got 'fn'
      <empty list>
  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(,)(',')
      PsiErrorElement:',' unexpected
        PsiElement(,)(',')
      PsiWhiteSpace(' ')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      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({)('{')
      PsiErrorElement:'#', <item> or <statement> expected, got '+'
        <empty list>
      PsiWhiteSpace('\n    ')
      PsiElement(+)('+')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('add')
    PsiErrorElement:'(' or < expected, got 'add'
      <empty list>
  PsiWhiteSpace(' ')
  PsiElement(identifier)('add')
  PsiErrorElement:'!' or '::' expected, got '('
    PsiElement(()('(')
  PsiElement(DUMMY_BLOCK)
    PsiElement())(')')
  PsiWhiteSpace(' ')
  PsiElement(DUMMY_BLOCK)
    PsiElement({)('{')
    PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  PsiElement(unsafe)('unsafe')
  PsiErrorElement:extern, fn, impl, mod or trait expected, got 'const'
    <empty list>
  PsiWhiteSpace(' ')
  RsFunctionImpl(FUNCTION)
    PsiElement(const)('const')
    PsiWhiteSpace(' ')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('b')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsRetTypeImpl(RET_TYPE)
      PsiElement(->)('->')
      PsiWhiteSpace(' ')
      RsUnitTypeImpl(UNIT_TYPE)
        PsiElement(()('(')
        PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnitExprImpl(UNIT_EXPR)
          PsiElement(()('(')
          PsiElement())(')')
      PsiWhiteSpace(' ')
      PsiElement(})('}')
  PsiWhiteSpace('\n\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)('a')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsRefLikeTypeImpl(REF_LIKE_TYPE)
          PsiElement(&)('&')
          PsiErrorElement:<type>, QUOTE_IDENTIFIER or mut expected, got ','
            <empty list>
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('b')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('bar')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiErrorElement:',' unexpected
        <empty list>
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('b')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('baz')
    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')
      PsiErrorElement:'!', ')', '+', ',', '::', <path parameters>, <type argument list> or '=' expected, got 'b'
        <empty list>
      PsiWhiteSpace(' ')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('b')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('quux')
    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(,)(',')
      PsiErrorElement:',' unexpected
        PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('b')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('spam')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      RsSelfParameterImpl(SELF_PARAMETER)
        PsiElement(self)('self')
      PsiErrorElement:')', ',' or ':' expected, got 'a'
        <empty list>
      PsiWhiteSpace(' ')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('a')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('eggs')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      RsSelfParameterImpl(SELF_PARAMETER)
        PsiElement(self)('self')
      PsiElement(,)(',')
      PsiErrorElement:<fn parameter> expected, got ','
        <empty list>
      PsiElement(,)(',')
      PsiWhiteSpace(' ')
      RsValueParameterImpl(VALUE_PARAMETER)
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('a')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('i32')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiErrorElement:')' or <self parameter> expected, got '{'
        <empty list>
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiErrorElement:')' or <self parameter> expected, got ';'
        <empty list>
    PsiWhiteSpace(' ')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\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')
      PsiErrorElement:'!', ')', '+', ',', '::', <path parameters>, <type argument list> or '=' expected, got '{'
        <empty list>
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      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(,)(',')
      PsiErrorElement:')' expected, got '{'
        <empty list>
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('bar')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiErrorElement:',' unexpected
        <empty list>
      PsiElement(,)(',')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      RsVariadicImpl(VARIADIC)
        PsiElement(...)('...')
      PsiElement(,)(',')
      PsiErrorElement:',' unexpected
        PsiElement(,)(',')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsRetTypeImpl(RET_TYPE)
      PsiElement(->)('->')
  PsiErrorElement:'!', '(', ';', <macro call>, <path start>, <ref like type no implicit trait>, '[', _, extern, fn, for, impl, unsafe or where expected, got 'fn'
    <empty list>
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('bar')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
