public boolean eval(StructLike data) {
    return new EvalVisitor().eval(data);
  }
@Test
  public void testNotNull() {
    Evaluator evaluator = new Evaluator(STRUCT, notNull("z"));
    assertThat(evaluator.eval(TestHelpers.Row.of(1, 2, null))).as("null is null").isFalse();
    assertThat(evaluator.eval(TestHelpers.Row.of(1, 2, 3))).as("3 is not null").isTrue();

    Evaluator structEvaluator = new Evaluator(STRUCT, notNull("s1.s2.s3.s4.i"));
    assertThat(
            structEvaluator.eval(
                TestHelpers.Row.of(
                    1,
                    2,
                    3,
                    TestHelpers.Row.of(
                        TestHelpers.Row.of(TestHelpers.Row.of(TestHelpers.Row.of(3)))))))
        .as("3 is not null")
        .isTrue();
  }