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)
        RsBinaryExprImpl(BINARY_EXPR)
          RsUnaryExprImpl(UNARY_EXPR)
            PsiElement(-)('-')
            RsBlockExprImpl(BLOCK_EXPR)
              RsBlockImpl(BLOCK)
                PsiElement({)('{')
                PsiWhiteSpace(' ')
                RsExprStmtImpl(EXPR_STMT)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('3')
                PsiWhiteSpace(' ')
                PsiElement(})('}')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(*)('*')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('5')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsUnaryExprImpl(UNARY_EXPR)
            PsiElement(-)('-')
            RsBlockExprImpl(BLOCK_EXPR)
              RsBlockImpl(BLOCK)
                PsiElement({)('{')
                PsiWhiteSpace(' ')
                RsExprStmtImpl(EXPR_STMT)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('3')
                PsiWhiteSpace(' ')
                PsiElement(})('}')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(+)('+')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('5')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsRangeExprImpl(RANGE_EXPR)
          RsUnaryExprImpl(UNARY_EXPR)
            PsiElement(-)('-')
            RsBlockExprImpl(BLOCK_EXPR)
              RsBlockImpl(BLOCK)
                PsiElement({)('{')
                PsiWhiteSpace(' ')
                RsExprStmtImpl(EXPR_STMT)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('3')
                PsiWhiteSpace(' ')
                PsiElement(})('}')
          PsiElement(..)('..')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('5')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsUnaryExprImpl(UNARY_EXPR)
            PsiElement(-)('-')
            RsBlockExprImpl(BLOCK_EXPR)
              RsBlockImpl(BLOCK)
                PsiElement({)('{')
                PsiWhiteSpace(' ')
                RsExprStmtImpl(EXPR_STMT)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('3')
                PsiWhiteSpace(' ')
                PsiElement(})('}')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(||)('||')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('5')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
