@Override
    public boolean equals(final Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        final Maybe<?> maybe = (Maybe<?>) o;

        // All undefined maybes are equal
        // All defined null maybes are equal
        return defined == maybe.defined &&
            (!defined || Objects.equals(nullableValue, maybe.nullableValue));
    }
A container that may be empty, may contain null, or may contain a value.
Distinct from {@link java.util.Optional<T>}, since Optional cannot contain null.

@param <T>
streams/src/main/java/org/apache/kafka/streams/state/internals/Maybe.java