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.