selector: selector recategorizedFrom: oldCategory to: newCategory inClass: aClass self trigger: (RecategorizedEvent method: (aClass compiledMethodAt: selector ifAbsent: [nil]) protocol: newCategory class: aClass oldProtocol: oldCategory) aClass = StackTest selector = #testCopyNonEmpty This is strange because when I do StackTest compiledMethodAt: #testCopyNonEmpty -> a compiledMethod. before actually removing the method using the browser Now it seems to me that the event is wrong because I do not recategorize a method, I'm removing it. When I exclude a selector the following method is invoked and I have the impression that the notification is too large. applyChangesOfNewTraitCompositionReplacing: oldComposition | changedSelectors | changedSelectors := super applyChangesOfNewTraitCompositionReplacing: oldComposition. self noteRecategorizedSelectors: changedSelectors oldComposition: oldComposition. ^ changedSelectors. I tried to fix it with that notifyOfRecategorizedSelector: element from: oldCategory to: newCategory newCategory isNil ifTrue: [ SystemChangeNotifier uniqueInstance methodRemoved: (self compiledMethodAt: element) ^^^ but here the method has been already removed and this is probably not the right place to fix it. would be better to emit an exclusion or method removal selector: element inProtocol: oldCategory class: self ] ifFalse: [ SystemChangeNotifier uniqueInstance selector: element recategorizedFrom: oldCategory to: newCategory inClass: self] But the problem is that the removeElement: method does not keep a reference to the removed moethod removeElement: element | oldCat | oldCat := self categoryOfElement: element. SystemChangeNotifier uniqueInstance doSilently: [ super removeElement: element]. self notifyOfChangedSelector: element from: oldCat to: (self categoryOfElement: element). I imagine that adrian you will not look at that before next tuesday :) Stef