### Question:
ExpressionRewriteRuleSet { public Rule<?> projectExpressionRewrite() { return new ProjectExpressionRewrite(rewriter); } ExpressionRewriteRuleSet(ExpressionRewriter rewriter); Set<Rule<?>> rules(); Rule<?> projectExpressionRewrite(); Rule<?> aggregationExpressionRewrite(); Rule<?> filterExpressionRewrite(); Rule<?> joinExpressionRewrite(); Rule<?> valuesExpressionRewrite();  }### Answer:
@Test public void testProjectionExpressionRewrite() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( Assignments.of(p.symbol("y"), PlanBuilder.expression("x IS NOT NULL")), p.values(p.symbol("x")))) .matches( project(ImmutableMap.of("y", expression("0")), values("x"))); }
@Test public void testProjectionExpressionNotRewritten() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( Assignments.of(p.symbol("y"), PlanBuilder.expression("0")), p.values(p.symbol("x")))) .doesNotFire(); }