transformations extractSharedCase "Scan the top-level statements for an shared case directive of the form: self sharedCodeNamed: inCase: . and remove the directive from the method body." | newStatements | newStatements := OrderedCollection new: parseTree statements size. parseTree statements do: [ :stmt | (stmt isSend and: [stmt selector = #sharedCodeNamed:inCase:]) ifTrue: [ sharedLabel := stmt args first value. sharedCase := stmt args last value ] ifFalse: [ newStatements add: stmt. ]. ]. parseTree setStatements: newStatements asArray. sharedCase ifNotNil:[ args isEmpty ifFalse:[self error: 'Cannot share code sections in methods with arguments']. ].