For null-safety, I prefer the way Kotlin and C# handle it: use T to denote non-nullable references, and T? to denote nullable references.
One might say T? is just a syntactic sugar for Optional<T>. In that case, please still provide the syntactic sugar and the compile time checkings (should not allow assigning null to Option<T>, just like how Java allows it awfully)