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 testNotNaN() {
    boolean shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("all_nans")).eval(FILE);
    assertThat(shouldRead)
        .as("Should skip: column with all nans will not contain non-nan")
        .isFalse();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("some_nans")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: at least one non-nan value in some nan column")
        .isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("no_nans")).eval(FILE);
    assertThat(shouldRead).as("Should read: at least one non-nan value in no nan column").isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("all_nulls_double")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: at least one non-nan value in all null column")
        .isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("no_nan_stats")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: no guarantee on if contains nan value without nan stats")
        .isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("all_nans_v1_stats")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: no guarantee on if contains nan value without nan stats")
        .isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, notNaN("nan_and_null_only")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: at least one null value in nan and nulls only column")
        .isTrue();
  }