[BLOCK QUOTE]. 

I looked at this with a few others on the team and nobody could quite remember or figure out where the difference comes from within a short amount of time, but we supposed there is probably an old, old PR that would explain it. I will say that it does kind of match my intuition of the subtle differences between object types and interfaces, where interfaces are just presumed to be more class-like. There is clearly not some super rigorous principle that we can appeal to in the abstract here—the example you came up with does look sort of surprising—but it is likely driven by heuristics that lend more useful type checking behavior to certain patterns in code that uses a lot of classes and interfaces. Coming up with a more specific answer would require a bit more spelunking into the `git blame` of the checker.