code: public static <T> Predicate<T> monitor(Predicate<T> predicate, AtomicLong calls) {
          return new MonitoringPredicate<T>(predicate, calls);
      }
docs: Monitors calls to a predicate.
  
  @param <T> the predicate parameter type
  @param predicate the predicate that will be monitored
  @param calls a value holder accumulating calls
  @return the proxied predicate