code: public static <T1, T2, T3, T4, R> TriFunction<T1, T2, T3, R> compose(Function<T4, R> unary, TriFunction<T1, T2, T3, T4> ternary) {
          dbc.precondition(unary != null, "cannot compose a null unary function");
          dbc.precondition(ternary != null, "cannot compose a null ternary function");
          return ternary.andThen(unary);
      }
docs: Composes a function with a ternary function.
  
  @param <T1> the first ternary parameter type
  @param <T2> the second ternary parameter type
  @param <T3> the third ternary parameter type
  @param <T4> unary parameter type and ternary return type
  @param <R> unary return type
  @param unary the unary function to be composed
  @param ternary the ternary function to be composed
  @return the composed ternary function