diff --git a/packages/stinst/parser/Extensions.st b/packages/stinst/parser/Extensions.st
index 3ff4df0..33dd156 100644
--- a/packages/stinst/parser/Extensions.st
+++ b/packages/stinst/parser/Extensions.st
@@ -37,6 +37,24 @@ Behavior extend [
 	 RBMethodNode that compiles to my method named by selector."
         ^(self compiledMethodAt: selector) methodParseNode
     ]
+
+    lookupFormattedSourceString: aSelector [
+	"Answer the method source code as a formatted string. Requires
+	 package Parser."
+
+	<category: 'source code'>
+	| method |
+	method := self lookupSelector: aSelector.
+	method isNil
+	   ifTrue: [^nil]
+	   ifFalse: [| header |
+		header := String streamContents: [:s |
+		   s nextPut: $";
+		     nextPutAll: method printString;
+		     nextPut: $";
+		     nextPut: Character nl].
+	^header, method methodFormattedSourceString]
+    ]
 ]
 
 
@@ -128,3 +146,28 @@ ClassDescription extend [
 	    fileOutCategory: category of: self to: aFileStream
     ]
 ]
+
+Symbol extend [
+    implementors [
+	"Answer a Set of all the compiled method associated with selector
+	 named by the receiver, which is supposed to be a valid message
+	 name."
+
+	<category: 'accessing the method dictionary'>
+	| implementors |
+
+	implementors := Set new.
+	Object withAllSubclassesDo: [:c | | m |
+	    m := c compiledMethodAt: self ifAbsent: [nil].
+	    m ifNotNil: [ implementors add: m]].
+	^implementors
+    ]
+
+    printImplementors [
+	"Print all the compiled method associated with selector named by
+	 the receiver, which is supposed to be a valid message name."
+
+	<category: 'accessing the method dictionary'>
+	self implementors do: [:m | stdout nextPutAll: m printString; nl ]
+    ]
+]
