code: public static <T, R, I extends Interceptor<T>> Function<T, R> intercept(Function<T, R> innermost, Iterable<I> interceptors) {
          dbc.precondition(interceptors != null, "cannot create an interceptor chain with a null iterable of interceptors");
          return new InterceptorChain<>(innermost, interceptors.iterator());
      }
docs: Creates an interceptor chain.
  
  @param <T> the function parameter type
  @param <R> the function result type
  @param <I> the interceptor type
  @param innermost the function to be intercepted
  @param interceptors an iterable of interceptor
  @return the resulting function