@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
  default R isNot(Optional<? extends V> optional) {
    Objects.requireNonNull(optional, "optional");
    return optional.map(this::isNot).orElseGet(this::isPresent);
  }
Match current attribute given an optional parameter. If optional is
empty, matching is equivalent to {@link #isPresent()} ()} otherwise standard
{@link #isNot(Object)} matching is used.

<p><strong>Note</strong> Different backends might treat null (missing/unknown) value differently. Negations
might or might not return missing value.
For SQL there is <a href="https://modern-sql.com/concept/three-valued-logic">Three-Valued-Logic</a>.
while Mongo is two-valued.
@throws NullPointerException if argument is null
criteria/common/src/org/immutables/criteria/matcher/OptionalValueMatcher.java