takeContentChanged() has a side effect and it should be checked first.
otherwise we can fall into some hard-to-debug problems related to
observing content.