Will the `parent.patches` condition still do what we want?  Before we were guaranteed that the object was not empty because it would have a `root` or `descendant` property.  Now it can be empty and will be falsy, even if the object exists.  Is that expected behavior?

Also, it looks like those two cases can collapse into one now that each condition does the same thing.  Do you want them to stay separate so the two cases remain clear?