code: public static <T1, T2, R> BiFunction<T1, T2, R> monitor(BiFunction<T1, T2, R> function, AtomicLong calls) {
          return new BinaryMonitoringFunction<>(function, calls);
      }
docs: Monitors calls to a binary function.
  
  @param <T1> the function first parameter type
  @param <T2> the function second parameter type
  @param <R> the function result type
  @param function the function that will be monitored
  @param calls a value holder accumulating calls
  @return the proxied function