Significant refactoring.  Add DescendantChangeEvent.