code: public static <T1, T2, T3, R> TriFunction<T1, T2, T3, R> intercept(TriFunction<T1, T2, T3, R> innermost, TernaryInterceptor<T1, T2, T3> interceptor) {
          dbc.precondition(interceptor != null, "cannot create an interceptor chain with a null interceptor");
          return new TernaryInterceptorChain<T1, T2, T3, R>(innermost, new SingletonIterator<TernaryInterceptor<T1, T2, T3>>(interceptor));
      }
docs: Creates a ternary interceptor chain.
  
  @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 innermost the function to be intercepted
  @param interceptor an interceptor
  @return the resulting function