code: public static <T> Predicate<T> spy(Predicate<T> predicate, Box<Boolean> result, Box<T> param) {
          return new CapturingPredicate<T>(predicate, result, param);
      }
docs: Proxies a predicate spying for result and parameter.
  
  @param <T> the predicate parameter type
  @param predicate the predicateto be spied
  @param result a box that will be containing spied result
  @param param a box that will be containing the spied parameter
  @return the proxied predicate