I looked at some SmallTalk examples, and figured out how to do decorators in SC (i think).
Here's an example in case it's useful for anyone else; dynamically
giving a spaceship an extra capability by wrapping it in a decorator
(the important thing is that the doesNotUnderstand method gets
overwritten in the decorator).
("Bombs dropped: "++n).postln;
s.launch_rocket() // will give an error because this method is missing
s=RocketDecorator(s) // wrap it in a decorator
s.launch_rocket() // now this works
s.drop_bombs() // and it can still drop bombs too