This isn't really an OO problem. You can have similar troubles in a language with no static typing and no type hierarchies because you still have clients with expectations about the contents of a particular field.
A published API is a contract. Changing contracts is painful. There is no silver bullet.
A published API is a contract. Changing contracts is painful. There is no silver bullet.