The object-oriented language Eiffel allows covariant changes to types of instance variables and to both parameter and result types of methods in subclasses. Supporters of Eiffel argue that allowing these covariant changes is essential in order to support flexible program development. However, as we have seen, this permits the introduction of type errors.