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