FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('f')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(=)('=')
          PsiWhiteSpace(' ')
          RsBinaryExprImpl(BINARY_EXPR)
            RsBlockExprImpl(BLOCK_EXPR)
              RsBlockImpl(BLOCK)
                PsiElement({)('{')
                PsiWhiteSpace(' ')
                RsExprStmtImpl(EXPR_STMT)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('0')
                PsiWhiteSpace(' ')
                PsiElement(})('}')
            PsiWhiteSpace(' ')
            RsBinaryOpImpl(BINARY_OP)
              PsiElement(!=)('!=')
            PsiWhiteSpace(' ')
            RsLitExprImpl(LIT_EXPR)
              PsiElement(INTEGER_LITERAL)('0')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(=)('=')
          PsiWhiteSpace(' ')
          RsBinaryExprImpl(BINARY_EXPR)
            RsLitExprImpl(LIT_EXPR)
              PsiElement(BOOL_LITERAL)('true')
            PsiWhiteSpace(' ')
            RsBinaryOpImpl(BINARY_OP)
              PsiElement(&&)('&&')
            PsiWhiteSpace(' ')
            RsBinaryExprImpl(BINARY_EXPR)
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiWhiteSpace(' ')
                  RsExprStmtImpl(EXPR_STMT)
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('0')
                  PsiWhiteSpace(' ')
                  PsiElement(})('}')
              PsiWhiteSpace(' ')
              RsBinaryOpImpl(BINARY_OP)
                PsiElement(==)('==')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('0')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsLoopExprImpl(LOOP_EXPR)
          PsiElement(loop)('loop')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiElement(})('}')
      PsiWhiteSpace(' ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsUnaryExprImpl(UNARY_EXPR)
            PsiElement(*)('*')
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(=)('=')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('expr')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
