code: public static <T, R> Function<T, R> intercept(Function<T, R> innermost, Interceptor<T>... interceptors) {
          return new InterceptorChain<>(innermost, new ArrayIterator<Interceptor<T>>(interceptors));
      }
docs: Creates an interceptor chain.
  
  @param <T> the function parameter type
  @param <R> the function result type
  @param innermost the function to be intercepted
  @param interceptors an array of interceptor
  @return the resulting function