FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('main')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('foo')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('bar')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('x')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('x')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          RsOuterAttrImpl(OUTER_ATTR)
            PsiElement(#)('#')
            PsiElement([)('[')
            RsMetaItemImpl(META_ITEM)
              RsPathImpl(PATH)
                PsiElement(identifier)('foo')
            PsiElement(])(']')
          PsiWhiteSpace(' ')
          RsOuterAttrImpl(OUTER_ATTR)
            PsiElement(#)('#')
            PsiElement([)('[')
            RsMetaItemImpl(META_ITEM)
              RsPathImpl(PATH)
                PsiElement(identifier)('bar')
            PsiElement(])(']')
          PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsUnaryExprImpl(UNARY_EXPR)
          RsOuterAttrImpl(OUTER_ATTR)
            PsiElement(#)('#')
            PsiElement([)('[')
            RsMetaItemImpl(META_ITEM)
              RsPathImpl(PATH)
                PsiElement(identifier)('a')
            PsiElement(])(']')
          PsiWhiteSpace(' ')
          PsiElement(-)('-')
          PsiWhiteSpace(' ')
          RsUnaryExprImpl(UNARY_EXPR)
            RsOuterAttrImpl(OUTER_ATTR)
              PsiElement(#)('#')
              PsiElement([)('[')
              RsMetaItemImpl(META_ITEM)
                RsPathImpl(PATH)
                  PsiElement(identifier)('b')
              PsiElement(])(']')
            PsiElement(-)('-')
            RsLitExprImpl(LIT_EXPR)
              PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('foo')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        RsOuterAttrImpl(OUTER_ATTR)
          PsiElement(#)('#')
          PsiElement([)('[')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('bar')
          PsiElement(])(']')
        PsiWhiteSpace('\n    ')
        RsBlockExprImpl(BLOCK_EXPR)
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
