| cm matcher answerNode methodNode rewriteRule replacement | cm := FooClass >> #foo:. methodNode := RBParser parseMethod: cm sourceCode. replacement := '`@collection collect: `@arg1 thenDo: [ : fileEntry | index := index + 1. JobProgress progress: (0.1 * index); title: ''Procesing...'', index asString ]'. matcher := RBParseTreeSearcher new matches: '`@collection collect: `@arg1' do: [ :aNode :answer | answer isNil ifTrue: [ aNode ] ifFalse: [ answer ] ]. answerNode := matcher executeTree: methodNode. rewriteRule := RBParseTreeRewriter new. (rewriteRule replace: answerNode newSource with: replacement) executeTree: cm parseTree