<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:large">Hi All,</div><div class="gmail_default" style="font-size:large"><br></div><div class="gmail_default"><font size="4">    to be able to ease </font>EphemeronDicitonary<font size="4"> into the system easily I'd like to clean up adding associations to Dictionary.  It seems to me there's a partial implementation of choosing an association class appropriate for a dictionary in the </font>implementors<font size="4"> of associationClass: Dictionary>>#associationClass, WeakKeyDictionary>>#associationClass, WeakValueDictionary>>#associationClass, (& in my image STON class>>#associationClass).  This seems workable; an EphemeronDictionary would simply add </font><span style="font-size:medium;color:rgb(0,0,0);font-family:-webkit-standard">associationClass ^ Ephemeron</span><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"> <font size="4">and we're done, except not quite...</font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4"><br></font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4">First, HashedCollection does not use associationClass, but it implements atNewIndex:put: and it strikes me that atNewIndex:put: for Dictionary really should check for the thing being added at least includingBehavior: self associationClass.  So that means Dictionary should override atNewIndex:put:.</font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4"><br></font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4">But what should happen in atNewIndex:put: if the object being added isn't appropriate?  Do we</font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4">- raise an error? (that's my preference, but I've got limited use cases in my head)</font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4">- replace the association with one of assocationClass? (seems dangerous to me but maybe someone needs this or the existing system does this anyway)</font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4">- ignore it and hope the user knows what they're doing?</font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4"><br></font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4"><br></font></font></span></div><div class="gmail_default"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><font size="4"><br></font></font></span></div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="border-collapse:separate"><font size="4"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></font></span></div></div></div></div></div></div></div></div></div>