Tested with 3.9a#6506 including execution of the sunit tests Andrew provided in a separated email. Reviewed all code for quality and conflicts. The refactoring is not crucial but it definitely makes these core classes cleaner. The work on cleaning up the code, creating a usfule test suite for this important set of classes and figuring out how to install the change definitely merits inclusion in 3.9a. (There is no particular need to add it to 3.8b, although I did some of my orignal testing there.) Background from preamble: " tlk:Can you tell me something about the motivation for the original Association Refactoring cs ? ab: Essentially, the problem was that several methods (like printOn: !) were missing from some subclasses of Association, like ReadOnlyVariableBinding. Also, WeakKeyAssociations were a really ugly hack. The solution seemed to be to refactor the class hierarchy. This was not hard, but coming up with a changeset that would file in without breaking the compiler half way through was a challenge! This changeset was produced by hand. The order in which the various classes are defined or redefined is critical."
AssociationRefact is the prereq for the other two cs's. It is Andrew's original cs with a change to the preamble to explain the motivation. AssociationRefactTest is tests the first cs and is a prereq for the final cs. Andrew sent me this cs, all I did was rename it, add a preamble and add a class comment for the test class. (I know, anal). AssociationRefactCleanUp is my work. It includes class comments for the association classes and a postscript to remove a now redundant test class. You could accept the first cs, or the first two cs and everything would be okay. But I think all three together make the better package.