FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiErrorElement:<expr> expected, got ';'
                <empty list>
            PsiElement(;)(';')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            PsiErrorElement:<match arm> expected, got '=>'
              PsiElement(=>)('=>')
            PsiWhiteSpace(' ')
            PsiElement(DUMMY_BLOCK)
              PsiElement({)('{')
              PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            PsiErrorElement:<match arm> expected, got '{'
              PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('0')
              PsiErrorElement:'=>', if or '|' expected, got '}'
                <empty list>
            PsiWhiteSpace(' ')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      PsiErrorElement:'+', '-', ';', <operator> or '}' expected, got '=>'
        PsiElement(=>)('=>')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsBlockExprImpl(BLOCK_EXPR)
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace('\n        ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnderscoreExprImpl(UNDERSCORE_EXPR)
          PsiElement(_)('_')
        PsiErrorElement:'(', '+', '-', ';', <operator>, '[' or '}' expected, got '=>'
          <empty list>
      PsiWhiteSpace(' ')
      PsiElement(=>)('=>')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsBlockExprImpl(BLOCK_EXPR)
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace('\n    ')
      PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      PsiErrorElement:'let' unexpected
        PsiElement(let)('let')
      PsiWhiteSpace(' ')
      PsiElement(identifier)('x')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      PsiElement(INTEGER_LITERAL)('92')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
