code: public T get(Supplier<? extends T> preferred) {
          return explicitOrElseGet(() -> {
              T value = preferred.get();
              if (value != null) {
                  return value;
              }
              return defaultValue.get(false);
          });
      }
docs: Retrieve the explicit value if present, followed in precedence by whatever value, if not-null
  supplied by the <code>preferred</code> parameter, followed by the default if all previous
  options were null.
  
  @param preferred The intermediate value supplier.
  @return The explicitly set, preferred or default value in that order, or possibly null.