code: public static <T, R> Function<T, R> intercept(Function<T, R> innermost, Interceptor<T> interceptor) {
          dbc.precondition(interceptor != null, "cannot create an interceptor chain with a null interceptor");
          return new InterceptorChain<>(innermost, new SingletonIterator<Interceptor<T>>(interceptor));
      }
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 interceptor the interceptor
  @return the resulting function