. "Even if B was a subclass of A, casting a List to a List is bad because it could allow you to add to that list instances of A (but not B) and the compiler would happily do that, even though it would not agree with the actual (runtime) type of the collection." . . .