docs: public static <T, F> Function<F, T> memoize(final Function<F, T> function) {
          return new MemoizeFunction<F, T>() {
              @Override
              public T calc(F arg) {
                  return function.apply(arg);
              }
          };
      }