So a few hours ago, I notice that the IRC Plugin to BottomFeeder was having an odd problem - trying to pop up a private chat was causing exceptions. This was not happening if I loaded just TypeLess into an image. Somewhere, there was a protocol override
After some wandering through code, I found a truly ugly override in the Aragon Goodies - look at the code for #selectionIndex in MultiSelectionInList - which should answer a Set.
| s | ^(s := selectionIndexHolder value) isEmpty ifTrue: [ ifFalse: [[s detect: [[:i | true]].
this was the cause of my problem. The expected result for that method is a Set - and this returns an Integer! Aragin should have created a new method and used it instead of breaking all client code that relies on this. At this point, regardless of anything else I've ever said, I did want method level namespaces. I was able to work around it, by doing a check in the TypeLess code for the presence of Aragon. Speaking of ugly though, in looking at MultiSelectionInList, I found this Aragon extension:
initialize | ldm context | self listHolder: List new asValue. ldm := Smalltalk at: #LensDataManager ifAbsent: [[^self selectionIndexHolder: Set new asValue]. context := thisContext. [[context sender notNil and: [[(context receiver isKindOf: ApplicationModel) not]] whileTrue: [[context := context sender]. (context receiver isKindOf: ldm) ifTrue: [[self selectionIndexHolder: ((PluggableAdaptor on: Set new asValue) getBlock: [[:m | m value] putBlock: [[:m :v | (v isKindOf: Collection) ifTrue: [[m value: v] ifFalse: [[m value: (Set with: v)]] updateBlock: [[:m :a :p | "a == #value" false])] ifFalse: [[self selectionIndexHolder: Set new asValue].
Ack! I know what's going on there, but I don't have to like it.... In any case, an updated IRC plugin parcel is on the site.