code: public static <T1, T2, R> BiFunction<T1, T2, R> memoize(final BiFunction<T1, T2, R> biFunc) {
      final Function<T1, Function<T2, R>> transformed = Memoizer.memoize(x -> Memoizer.memoize(y -> biFunc.apply(x, y)));
      return Transformations
          .<T1, T2, R>unCurryBiFunction()
          .apply(transformed);
    }
docs: <p>memoize.</p>
  
  @param biFunc a {@link java.util.function.BiFunction} object.
  @param <T1> a T1 object.
  @param <T2> a T2 object.
  @param <R> a R object.
  @return a {@link java.util.function.BiFunction} object.