code: public static <T1, T2, R> BiFunction<T1, T2, R> intercept(BiFunction<T1, T2, R> innermost, BinaryInterceptor<T1, T2>... interceptors) {
          return new BinaryInterceptorChain<>(innermost, new ArrayIterator<BinaryInterceptor<T1, T2>>(interceptors));
      }
docs: Creates a binary interceptor chain.
  
  @param <T1> the function first parameter type
  @param <T2> the function second parameter type
  @param <R> the function result type
  @param innermost the function to be intercepted
  @param interceptors an array of interceptors
  @return the resulting function