public boolean eval(StructLike data) {
    return new EvalVisitor().eval(data);
  }
@Test
  public void testNot() {
    Evaluator evaluator = new Evaluator(STRUCT, not(equal("x", 7)));
    assertThat(evaluator.eval(TestHelpers.Row.of(7))).as("not(7 == 7) => false").isFalse();
    assertThat(evaluator.eval(TestHelpers.Row.of(8))).as("not(8 == 7) => false").isTrue();

    Evaluator structEvaluator = new Evaluator(STRUCT, not(equal("s1.s2.s3.s4.i", 7)));
    assertThat(
            structEvaluator.eval(
                TestHelpers.Row.of(
                    7,
                    null,
                    null,
                    TestHelpers.Row.of(
                        TestHelpers.Row.of(TestHelpers.Row.of(TestHelpers.Row.of(7)))))))
        .as("not(7 == 7) => false")
        .isFalse();
    assertThat(
            structEvaluator.eval(
                TestHelpers.Row.of(
                    8,
                    null,
                    null,
                    TestHelpers.Row.of(
                        TestHelpers.Row.of(TestHelpers.Row.of(TestHelpers.Row.of(8)))))))
        .as("not(8 == 7) => false")
        .isTrue();
  }