“Upcast” here is just a way of saying that something with a given type is used at a wider type. The problem is that this upcast is totally unsound, but since the type in question should be illegal anyway it’s probably not a problem.
Type matches have very subtle semantics based on the disjointness of types. Matching on Nothing
will probably never work as you wanted.