code: public static <T1, T2, T3, R> TriPredicate<T1, T2, T3> compose(Predicate<R> predicate, TriFunction<T1, T2, T3, R> function) {
          dbc.precondition(predicate != null, "cannot compose function with a null predicate");
          dbc.precondition(function != null, "cannot compose predicate with a null ternary function");
          return (t1, t2, t3) -> predicate.test(function.apply(t1, t2, t3));
      }
docs: Composes a predicate with a ternary function (predicate ° function).
  
  @param <T1> the function first type
  @param <T2> the function second type
  @param <T3> the function third type
  @param <R> the function result type and the predicate type
  @param predicate the predicate to be composed
  @param function the function to be composed
  @return the composed predicate