Moves the removal of children to an internal function.

This prevents the ambiguity of the call stack when a user wanting to clear a collection as opposed to a collection being cleared prior to closing.

fixes #1604
`to.not.have.been.called`???