parquet-column/src/main/java/org/apache/parquet/filter2/compat/FilterCompat.java
public static Filter get(FilterPredicate filterPredicate, UnboundRecordFilter unboundRecordFilter) {
    checkArgument(filterPredicate == null || unboundRecordFilter == null,
        "Cannot provide both a FilterPredicate and an UnboundRecordFilter");

    if (filterPredicate != null) {
      return get(filterPredicate);
    }

    if (unboundRecordFilter != null) {
      return get(unboundRecordFilter);
    }

    return NOOP;
  }
public static Filter get(FilterPredicate filterPredicate, UnboundRecordFilter unboundRecordFilter) {
    checkArgument(filterPredicate == null || unboundRecordFilter == null,
        "Cannot provide both a FilterPredicate and an UnboundRecordFilter");

    if (filterPredicate != null) {
      return get(filterPredicate);
    }

    if (unboundRecordFilter != null) {
      return get(unboundRecordFilter);
    }

    return NOOP;
  }
Given either a FilterPredicate or the class of an UnboundRecordFilter, or neither (but not both)
return a Filter that wraps whichever was provided.
<p>
Either filterPredicate or unboundRecordFilterClass must be null, or an exception is thrown.
<p>
If both are null, the no op filter will be returned.

@param filterPredicate a filter predicate, or null
@param unboundRecordFilter an unbound record filter, or null
@return a Filter wrapping either the predicate or the unbound record filter (from the old API)