The Liskov Substitution Principle is broken in many places in the framework.

This is a problem that generics might help to solve?