docs: public static <T1, T2, T3, R> TriFunction<T1, T2, T3, R> memoize(final TriFunction<T1, T2, T3, R> threeFunc) {
      final Function<T1, Function<T2, Function<T3, R>>> transformed
          = Memoizer.memoize(x -> Memoizer.memoize(y -> Memoizer.memoize(z -> threeFunc.apply(x, y, z))));
      return Transformations
          .<T1, T2, T3, R>unCurryTriFunction()
          .apply(transformed);
  //    return (x, y, z) -> transformed.apply(x).apply(y).apply(z);
    }