code: @SuppressWarnings("unchecked")
      protected final <O extends AbstractOption<V>, V> Optional<V> get0(AbstractOption<V> option) {
          @SuppressWarnings("rawtypes")
          final AbstractOptionValue<O, V> optionValue =
                  (AbstractOptionValue<O, V>) valueMap.get(option);
          return optionValue == null ? Optional.empty() : Optional.of(optionValue.value());
      }
docs: Returns the value of the specified {@code option}.
  
  @param <O> the type of the option
  @param <V> the type of the value