Casting a reference doesn't change the type of the object that is being referenced. Regardless of whether you cast x to X, Y or Z, the runtime type of the object referenced by x is still a Z.
Try 100 things. 2 will work out, but you will never know in advance which 2. This tiny ad might be one: