The MultiDictionary is a planned improve variation on the existing HashTable structure which avoids the current problem of the HashTable in that the values associated with a specific key(s) are munged together and that all keys are not preserved
The planned design of this is to use a Dictionary<TKey, BTree<TKey, TValue>> i.e.
Initial hash puts you in the right bucket even if there is a colliding hash
BTree finds the exact key using a standard binary search
Values are stored on BTree Nodes
Hash Function and Key comparison function should be user defineable
This will allow us to graudally replace all existing HashTable usages with our MultiDictionary (or just refactor HashTable to use MultiDictionary internally)