OOP - Recovering lost class types

 Normally casting is used to convert classes to other classes, however this operation can break the type system. For example, a "List&q...