@Override
    public Set<Rule<?>> rules()
    {
        return ImmutableSet.of(filterRowExpressionRewriteRule(), projectRowExpressionRewriteRule());
    }
@Test
    public void testWithNull()
    {
        tester().assertThat(
                ImmutableSet.<Rule<?>>builder().addAll(new SimplifyRowExpressions(getMetadata()).rules()).addAll(
                        new RewriteConstantArrayContainsToInExpression(getFunctionManager()).rules()).build())
                .setSystemProperty(REWRITE_CONSTANT_ARRAY_CONTAINS_TO_IN_EXPRESSION, "true")
                .on(p -> {
                    VariableReferenceExpression a = p.variable("a", BOOLEAN);
                    VariableReferenceExpression b = p.variable("b");
                    return p.project(
                            assignment(a, p.rowExpression("contains(array[1, 2, 3, null], b)")),
                            p.values(b));
                })
                .matches(
                        project(
                                ImmutableMap.of("a", expression("b IN (1, 2, 3, null)")),
                                values("b")));
    }