Richtig vermutet, bei einem is auf genau die Klasse der Variable oder eine Elternklasse macht der Compiler einfach nur eine Assigned Überprüfung.
Und wenn nicht, dann gibt es entweder einen Bug und/oder jemand hat böswillig/
mutwillig die Typprüfung umgangen.
Ja, auf eine Art irgendwie logisch, dass das so gemacht wird. Ansonsten bringt einem die ganze Typensicherheit auch nix, wenn man an jeder Ecke doch noch nachschauen muss, obs stimmt.