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