code: public <X extends Throwable> int orElseThrow(@NotNull Supplier<X> exceptionSupplier) throws X {
          if (isPresent) {
              return value;
          } else {
              throw exceptionSupplier.get();
          }
      }
docs: Returns the value if present, otherwise throws an exception provided by supplier function.
  
  @param <X> the type of exception to be thrown
  @param exceptionSupplier  supplier function that produces an exception to be thrown
  @return inner value if present
  @throws X if inner value is not present