Hi guys I'm sorry but ProtocolBrowser is the last user of MessageSet so we will deprecate it. We cannot continue to have old code that hamper making the system really better. Stef setClassAndSelectorIn: csBlock "Decode strings of the form <selectorName> (<className> [class])" | i classAndSelString selString sel | sel := self selection ifNil: [^ csBlock value: nil value: nil]. (sel isKindOf: RGMethodDefinition) ifTrue: [ ^ csBlock value: sel realClass value: sel selector ]. "MethodReference should be remove" ((sel isKindOf: MethodReference) or: [sel isKindOf: SourcedMethodReference]) ifTrue: [ sel setClassAndSelectorIn: csBlock ] ifFalse: [ selString := sel asString. i := selString indexOf: $(. "Rearrange to <className> [class] <selectorName> , and use MessageSet" classAndSelString := (selString copyFrom: i + 1 to: selString size - 1) , ' ' , (selString copyFrom: 1 to: i - 1) withoutTrailingBlanks. Smalltalk tools messageSet parse: classAndSelString toClassAndSelector: csBlock. ]. parse: methodRef toClassAndSelector: csBlock "Decode strings of the form <className> [class] <selectorName>." | tuple cl | self flag: #mref. "compatibility with pre-MethodReference lists" methodRef ifNil: [ ^ csBlock value: nil value: nil ]. (methodRef isKindOf: RGMethodDefinition) ifTrue: [ ^ csBlock value: methodRef realClass value: methodRef selector ]. (methodRef isKindOf: SourceReference) ifTrue: [ ^ methodRef setClassAndSelectorIn: csBlock ]. methodRef isEmpty ifTrue: [ ^ csBlock value: nil value: nil ]. tuple := methodRef asString findTokens: ' .'. cl := Smalltalk globals at: tuple first asSymbol ifAbsent: [ ^ csBlock value: nil value: nil ]. (tuple size = 2 or: [ tuple size > 2 and: [ (tuple at: 2) ~= 'class' ] ]) ifTrue: [ ^ csBlock value: cl value: (tuple at: 2) asSymbol ] ifFalse: [ ^ csBlock value: cl class value: (tuple at: 3) asSymbol ]