code: public static <T1, T2, T3, R> TriFunction<T1, T2, T3, R> spy(TriFunction<T1, T2, T3, R> function, Box<R> result, Box<T1> param1, Box<T2> param2, Box<T3> param3) {
          return new TernaryCapturingFunction<T1, T2, T3, R>(function, result, param1, param2, param3);
      }
docs: Proxies a ternary function spying for result and parameters.
  
  @param <R> the function result type
  @param <T1> the function first parameter type
  @param <T2> the function second parameter type
  @param <T3> the function third parameter type
  @param function the function 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 function