- 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
StopProcessingIfChangedafter every convention automaticallyThis should allow to fix these:
EntityType.IsOwned()or add a convention type for it