Store different configuration source values in separate layers, so when a higher source value is removed the lower source can be restored without re-running the conventions
Use reference counting to avoid scanning the model for unused elements. When a configuration source of an aspect is changed because it is referenced from another element this reference should be stored in a collection, so if all references are removed the aspect can be removed as well or its configuration source downgraded to what it was previously
Call StopProcessingIfChanged after every convention automatically
When the conventions for an event are done running the current model state should be returned
This should allow to fix these:
Remove most invocations on removed members and stop running the conventions when a removed member is readded
Remove the implementation of EntityType.IsOwned() or add a convention type for it
StopProcessingIfChanged
after every convention automaticallyThis should allow to fix these:
EntityType.IsOwned()
or add a convention type for it