 Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context.Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler).Class or object hierarchies must be carefully designed, considering possible incorrect uses that cannot be detected syntactically.