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