I am designing APIs that need to support both reference (class/object) and value types. I am running into restrictions of `mutating` keyword in my protocols and this is causing a lot of duplication of code. In order to understand what I mean please take a look at this gist <http://gist.github.com/hooman/2b74d9756976a43330c1acfcfba699f3>.
As you see, I have pairs of almost identical declarations: KeyValueStore vs KeyValueStoreObject, and AnyDictionaryStore vs AnyDictionaryStoreObject. This keeps rapidly growing as I am designing my APIs. Is there any sane way around this?
Thank you for your time,