code: public static <T1, T2, T3> TriPredicate<T1, T2, T3> spy(TriPredicate<T1, T2, T3> predicate, Box<Boolean> result, Box<T1> param1, Box<T2> param2, Box<T3> param3) {
          return new TernaryCapturingPredicate<T1, T2, T3>(predicate, result, param1, param2, param3);
      }
docs: Proxies a ternary predicate spying for result and parameters.
  
  @param <T1> the predicate first parameter type
  @param <T2> the predicate second parameter type
  @param <T3> the predicate third parameter type
  @param predicate the predicate to be spied
  @param result a box that will be containing spied result
  @param param1 a box that will be containing the first spied parameter
  @param param2 a box that will be containing the second spied parameter
  @param param3 a box that will be containing the third spied parameter
  @return the proxied predicate