public Rule<ProjectNode> projectNodeRule()
    {
        return new PullUpExpressionInLambdaProjectNodeRule();
    }
@Test
    public void testIfExpressionOnCondition()
    {
        tester().assertThat(new PullUpExpressionInLambdaRules(getFunctionManager()).projectNodeRule())
                .setSystemProperty(PULL_EXPRESSION_FROM_LAMBDA_ENABLED, "true")
                .on(p ->
                {
                    p.variable("col1", new ArrayType(BOOLEAN));
                    p.variable("col2", new ArrayType(BIGINT));
                    p.variable("col3");
                    return p.project(
                            Assignments.builder().put(p.variable("expr", VARCHAR), p.rowExpression(
                                    "transform(col1, x -> if(col3 > 2, col2[2], 0))")).build(),
                            p.values(p.variable("col1", new ArrayType(BOOLEAN)), p.variable("col2", new ArrayType(BIGINT)), p.variable("col3")));
                }).matches(
                        project(
                                ImmutableMap.of("expr", expression("transform(col1, x -> if(greater_than, col2[2], 0))")),
                                project(ImmutableMap.of("greater_than", expression("col3>2")),
                                        values("col1", "col2", "col3"))));
    }