code: public static <T, U, R, E extends Throwable> @NonNull BiFunction<T, U, R> unwrappingRethrowBiFunction(final @NonNull ThrowingBiFunction<T, U, R, E> function) {
      return (first, second) -> {
        try {
          return function.throwingApply(first, second);
        } catch(final Throwable t) {
          throw rethrow(unwrap(t));
        }
      };
    }
docs: Returns a function which will unwrap and rethrow any throwables caught in {@code function}.
  
  @param function the function
  @param <T> the first input type
  @param <U> the second input type
  @param <R> the output type
  @param <E> the exception type
  @return a bi-function