And to be honest, (T | Nil) is pretty difficult to distinguish from (Maybe a = a + 1). Complaints feel difficult to motivate to me anyway.
Unions seem like more of a language-level feature, so I'm not sure you could abstract over them in the same way.
Nonetheless, I am thrilled that we are seeing more and more languages that don't have implicit nullability on any type.