To me this code is a sign of a hidden conditional (in the vein of isKindOf:)

setLineShapeIfNecessary
(self nodeShape class inheritsFrom: RTAbstractLine)
ifFalse: [ self shape line ]
And I would use double dispatch instead.