public boolean eval(StructLike data) {
    return new EvalVisitor().eval(data);
  }
@Test
  public void testNotStartsWith() {
    StructType struct = StructType.of(required(24, "s", Types.StringType.get()));
    Evaluator evaluator = new Evaluator(struct, notStartsWith("s", "abc"));
    assertThat(evaluator.eval(TestHelpers.Row.of("abc")))
        .as("abc notStartsWith abc should be false")
        .isFalse();
    assertThat(evaluator.eval(TestHelpers.Row.of("xabc")))
        .as("xabc notStartsWith abc should be true")
        .isTrue();
    assertThat(evaluator.eval(TestHelpers.Row.of("Abc")))
        .as("Abc notStartsWith abc should be true")
        .isTrue();
    assertThat(evaluator.eval(TestHelpers.Row.of("a")))
        .as("a notStartsWith abc should be true")
        .isTrue();
    assertThat(evaluator.eval(TestHelpers.Row.of("abcde")))
        .as("abcde notStartsWith abc should be false")
        .isFalse();
    assertThat(evaluator.eval(TestHelpers.Row.of("Abcde")))
        .as("Abcde notStartsWith abc should be true")
        .isTrue();
  }