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