FILE
  PsiComment(<EOL_COMMENT>)('// See stuff around `Restrictions::RESTRICTION_STMT_EXPR` in libsyntax')
  PsiWhiteSpace('\n\n')
  RsFunctionImpl(FUNCTION)
    RsVisImpl(VIS)
      PsiElement(pub)('pub')
    PsiWhiteSpace(' ')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    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)('String')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// These are not bit and, these are two statements.')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBlockExprImpl(BLOCK_EXPR)
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsExprStmtImpl(EXPR_STMT)
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnaryExprImpl(UNARY_EXPR)
          PsiElement(*)('*')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBlockExprImpl(BLOCK_EXPR)
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsExprStmtImpl(EXPR_STMT)
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnaryExprImpl(UNARY_EXPR)
          PsiElement(&)('&')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsLoopExprImpl(LOOP_EXPR)
          PsiElement(loop)('loop')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnaryExprImpl(UNARY_EXPR)
          PsiElement(*)('*')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsWhileExprImpl(WHILE_EXPR)
          PsiElement(while)('while')
          PsiWhiteSpace(' ')
          RsConditionImpl(CONDITION)
            RsLitExprImpl(LIT_EXPR)
              PsiElement(BOOL_LITERAL)('true')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnaryExprImpl(UNARY_EXPR)
          PsiElement(&)('&')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsLoopExprImpl(LOOP_EXPR)
          PsiElement(loop)('loop')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsUnaryExprImpl(UNARY_EXPR)
          PsiElement(&)('&')
          PsiElement(mut)('mut')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// These are binary expressions')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsBinaryExprImpl(BINARY_EXPR)
          RsBlockExprImpl(BLOCK_EXPR)
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(*)('*')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsBinaryExprImpl(BINARY_EXPR)
          RsBlockExprImpl(BLOCK_EXPR)
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(&)('&')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsBinaryExprImpl(BINARY_EXPR)
          RsLoopExprImpl(LOOP_EXPR)
            PsiElement(loop)('loop')
            PsiWhiteSpace(' ')
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiElement(})('}')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(*)('*')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(&)('&')
          PsiWhiteSpace(' ')
          RsBlockExprImpl(BLOCK_EXPR)
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
