code: public static <T, E extends Throwable> @NonNull Predicate<T> unwrappingRethrowPredicate(final @NonNull ThrowingPredicate<T, E> predicate) {
      return input -> {
        try {
          return predicate.throwingTest(input);
        } catch(final Throwable t) {
          throw rethrow(unwrap(t));
        }
      };
    }
docs: Returns a predicate which will unwrap and rethrow any throwables caught in {@code predicate}.
  
  @param predicate the predicate
  @param <T> the input type
  @param <E> the exception type
  @return a predicate