@Nullable
    public <X extends Throwable> T orElseThrow(@Nonnull Supplier<? extends X> exceptionSupplier) throws X {
        if (isPresent()) {
            return this.value;
        } else {
            throw exceptionSupplier.get();
        }
    }
Return the contained value, if present, otherwise throw an exception
to be created by the provided supplier.

@param <X> Type of the exception to be thrown
@param exceptionSupplier The supplier which will return the exception to
be thrown
@return the present value
@throws X if there is no value present
@throws NullPointerException if no value is present and
{@code exceptionSupplier} is null
helper/src/main/java/me/lucko/helper/utils/NullableOptional.java