Needing to cast from an ``interface`` to a concrete type indicates that something is wrong with the abstractions in use, likely that something is missing from the ``interface``. Instead of casting to a discrete type, the missing functionality should be added to the ``interface``. Otherwise there is the risk of runtime exceptions.