 This is in general good practice, but may require that the original author of anticipated such a problem, and defined the mutators as returning a value.Also, it requires the client code to test the return value for support of the stretch function, which in effect is like testing if the referenced object is either a circle or an ellipse.Another way to look at this is that it is like putting in the contract that the contract may or may not be fulfilled depending on the object implementing the interface.