It's so sad that Java 8 had the chance to really fix the null problem, but gave us only the half-assed `java.util.Optional `. Rather than implementing optional values at the language level, it's just another class tossed into the JRE. This is perfectly legal code, where the optional wrapper itself is null: Optional getMiddleName() { return null; }
I love this solution. Now you have two kinds of nulls.
There's nothing inherently wrong with an "absence of value, value"
Optional.empty is not null, it's no-value