I look at this a bit differently, but I come to the same conclusion. KeyedCollections implement a set of methods that depend on the ordering of keys. These include at least the following:
In EsIndexedDictionary and its subclasses, all of these methods with the exception of keysDo: are driven by the ordering of 'sequenceableKeys', not the ordering of keys in 'lookupTable'. It seems reasonable that all these methods should behave in a similar manner with respect to key ordering.
Both EsIndexedDictionary>>keysDo: and EsOrderedDictionary>>keysDo: should be modified.
Yes, a shallowCopy (similar to what is done for 'keys') would be more efficient.
3. EsIndexedDictionary and EsOrderedDictionary both implement = but they don't implement a corresponding hash function. I understand this is probably a bug.
Yes, a bug.
I will open a defect report for these 3 items. Thanks for letting us know about them. If any of your other hundreds of changes should be propogated into the base code, please let us know.
John O'Keefe [|], Principal Smalltalk Architect, Instantiations Inc.