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

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