that makes sense. i think an important question here is - what does "return null" in a method which returns Optional<T> do? will it return a null Optional<T>, or will it return a non-null Optional<T> which is empty?
sorry to rub it in, but Java needs value types. this whole issue, however maybe irrelevant, does not exist in C#.