It seems like this isn't true for directory operations (add/delete child entries), since `_handleDirectoryChange()` fires a change event even if the added/removed lists both turn out empty.  It actually seems like all those operations will always fire two change events, one with accurate added/removed lists and one with empty lists.  So maybe we shouldn't fire a synthetic change at all in those cases?  (Except rename of course).