docs: public static <T1, T2, R> Function2<T1, T2, R> memoizeBiFunctionAsync(final BiFunction<T1, T2, R> fn, ScheduledExecutorService ex, long updateRateInMillis) {
          val memoise2 = memoizeFunctionAsync((final Tuple2<T1, T2> pair) -> fn.apply(pair._1(), pair._2()),ex,updateRateInMillis);
          return (t1, t2) -> memoise2.apply(tuple(t1, t2));
      }