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