static <C, T extends Throwable> @NonNull ExceptionHandler<C, T> unwrappingHandler(
            final @NonNull Predicate<Throwable> predicate
    ) {
        return ctx -> {
            final Throwable cause = ctx.exception().getCause();
            if (cause != null && predicate.test(cause)) {
                throw cause;
            }
            throw ctx.exception();
        };
    }
Returns an exception handler that throws the cause of the {@link ExceptionContext#exception()} if it's
not {@code null} and the {@code predicate} evaluates to {@code true}.
Otherwise, it will re-throw the {@link ExceptionContext#exception()}.

@param <C>       the command sender type
@param <T>       the exception type
@param predicate predicate that tests the cause of the exception
@return the exception handler
cloud-core/src/main/java/org/incendo/cloud/exception/handling/ExceptionHandler.java