code: public static <X> Optional<X> unlessOpt(@Nonnull Optional<X> first, Supplier<Optional<X>> second) {
          return first.isPresent() ? first : second.get();
      }
docs: Provide approximation of scala's Option.orElse(=&gt;Y). For when you want to evaluate
  alternate values when an optional value is absent, where the alternates ARE also Optionals,
  and the result will also be an Optional. (What happens in an Optional stays in an Optional.)
  If first is absent, then lazily evaluate second, resulting in another Option.
  <p>
  This differs to the above in that the alternate values are optional too.
  </p>
  <p>
  It's important to note that the second parameter lambda will only get evaluated if the argument
  "first" is empty.
  </p>
  e.g.: z = unlessOpt(x).apply(() -&gt; somePossiblyExpensiveExpressionResultingInAnOptionalX);
  
  @param first the value to check for presence and use if available
  @param second a supplier which will be evaluated if "first" is absent
  @param <X> type of value specified contained in first's Optional.
  @return if first is present, otherwise the supplier is evaluated (see example above).