class PredicatedTransformation implements Transformation<R> {

    @Override
    public R apply(R record) {
        if (negate ^ predicate.test(record)) {
            return delegate.apply(record);
        }
        return record;
    }

      PredicatedTransformation(Predicate<R> predicate, boolean negate, Transformation<R> delegate);

}