public boolean eval(ContentFile<?> file) {
    // TODO: detect the case where a column is missing from the file using file's max field id.
    return new MetricsEvalVisitor().eval(file);
  }
@Test
  public void testIntegerNotEqRewritten() {
    boolean shouldRead =
        new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MIN_VALUE - 25))).eval(FILE);
    assertThat(shouldRead).as("Should match: no values == 5").isTrue();

    shouldRead = new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MIN_VALUE - 1))).eval(FILE);
    assertThat(shouldRead).as("Should match: no values == 39").isTrue();

    shouldRead = new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MIN_VALUE))).eval(FILE);
    assertThat(shouldRead).as("Should not match: some value may be == 30").isFalse();

    shouldRead = new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MAX_VALUE - 4))).eval(FILE);
    assertThat(shouldRead).as("Should not match: some value may be == 75").isFalse();

    shouldRead = new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MAX_VALUE))).eval(FILE);
    assertThat(shouldRead).as("Should not match: some value may be == 79").isFalse();

    shouldRead = new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MAX_VALUE + 1))).eval(FILE);
    assertThat(shouldRead).as("Should match: no values == 80").isTrue();

    shouldRead = new StrictMetricsEvaluator(SCHEMA, not(equal("id", INT_MAX_VALUE + 6))).eval(FILE);
    assertThat(shouldRead).as("Should read: no values == 85").isTrue();
  }