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

  public static <T extends Comparable<T>> Filter<T> greaterThan(final T value) {
    return by((ProcessFunction<T, Boolean>) input -> input.compareTo(value) > 0)
        .described(String.format("x > %s", value));
  }

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

}