public boolean eval(StructLike data) {
    return new EvalVisitor().eval(data);
  }
@Test
  public void testIsNan() {
    Evaluator evaluator = new Evaluator(STRUCT, isNaN("y"));
    assertThat(evaluator.eval(TestHelpers.Row.of(1, Double.NaN, 3))).as("NaN is NaN").isTrue();
    assertThat(evaluator.eval(TestHelpers.Row.of(1, 2.0, 3))).as("2 is not NaN").isFalse();

    Evaluator structEvaluator = new Evaluator(STRUCT, isNaN("s5.s6.f"));
    assertThat(
            structEvaluator.eval(
                TestHelpers.Row.of(
                    1, 2, 3, null, TestHelpers.Row.of(TestHelpers.Row.of(Float.NaN)))))
        .as("NaN is NaN")
        .isTrue();
    assertThat(
            structEvaluator.eval(
                TestHelpers.Row.of(1, 2, 3, null, TestHelpers.Row.of(TestHelpers.Row.of(4F)))))
        .as("4F is not NaN")
        .isFalse();
  }