Get rid of the strange inheritance relationship between IDonutBuilder and IDonutExecutor by splitting out the class CachedDonutNullOpDonutBuilder
Some minor cleanup and a comment about something I don't quite understand that kept me from performing a cleanup I intended to make.
I figured it out. If I want to validate the number of children I had better take into consideration that one may inhabit multiple locations in the sorted list in the case of multiple identical child actions.
Improve exception message. I'm frustrated by exceptions that do not contain the information I should not make the same mistake.
Add missing assert.
Make the Donut and AutoCacheItem class interfaces more robust.