class Filter extends PTransform<PCollection<T>, PCollection<T>> {

  public static <T, PredicateT extends ProcessFunction<T, Boolean>> Filter<T> by(
      PredicateT predicate) {
    return new Filter<>(predicate);
  }

  private  Filter(ProcessFunction<T, Boolean> predicate);
  private  Filter(ProcessFunction<T, Boolean> predicate, String predicateDescription);

}