I think this is the same as: Dispatching on the result of unwrap_unionall seems weird? (which gives an even more MWE).
I’m no type-system expert, but to me it still kind of seems like a bug, e.g. in OPs first example, how can T
simultaneously be undefined but also have been verified to be T<:Real
?