code: public static <A, B> Predicate<A> compose(
        Predicate<B> predicate, Function<A, ? extends B> function) {
      return new CompositionPredicate<A, B>(predicate, function);
    }
docs: Returns the composition of a function and a predicate. For every {@code x}, the generated
  predicate returns {@code predicate(function(x))}.
  
  @return the composition of the provided function and predicate