FILE
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement(()('(')
      PsiElement())(')')
    PsiErrorElement:`;` expected, got 'fn'
      <empty list>
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('f')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('foo')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              PsiElement())(')')
        PsiErrorElement:'(', '+', '-', ';', <operator>, '[' or '}' expected, got 'let'
          <empty list>
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('a')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('0')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiWhiteSpace(' ')
      RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
        PsiElement(()('(')
        RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
          PsiElement(identifier)('a')
        PsiErrorElement:')' expected
          <empty list>
      PsiWhiteSpace(' ')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiWhiteSpace(' ')
      RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
        PsiElement([)('[')
        PsiWhiteSpace(' ')
        RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
          PsiElement(()('(')
          RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
            PsiElement(identifier)('a')
          PsiErrorElement:')' expected
            <empty list>
        PsiWhiteSpace(' ')
        PsiElement(])(']')
      PsiWhiteSpace(' ')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiWhiteSpace(' ')
      RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
        PsiElement([)('[')
        PsiWhiteSpace(' ')
        RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
          PsiElement(identifier)('a')
        PsiErrorElement:']' expected
          <empty list>
      PsiWhiteSpace(' ')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsMacroCallImpl(MACRO_CALL)
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement(()('(')
      PsiWhiteSpace(' ')
      RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
          PsiElement(identifier)('a')
        PsiErrorElement:'}' expected
          <empty list>
      PsiWhiteSpace(' ')
      PsiElement(])(']')
      PsiWhiteSpace(' ')
      PsiElement())(')')
    PsiElement(;)(';')
  PsiWhiteSpace('\n\n')
  RsMacroCallImpl(MACRO_CALL)
    PsiComment(<EOL_COMMENT>)('// Should be the last in the file')
    PsiWhiteSpace('\n')
    RsPathImpl(PATH)
      PsiElement(identifier)('foo')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    RsMacroArgumentImpl(MACRO_ARGUMENT)
      PsiElement({)('{')
      PsiWhiteSpace(' ')
      RsMacroArgumentTTImpl(MACRO_ARGUMENT_TT)
        PsiElement(()('(')
        PsiErrorElement:')' expected
          <empty list>
