% ./main 
three widgets should hear about otter:
otter thingHappened in widget 1
otter thingHappened in GoatCancelingWidget 2
otter thingHappened in GoatExceptionWidget 3

widgets 1 and 3 should hear about badger:
badger thingHappened in widget 1
badger thingHappened in GoatExceptionWidget 3

widgets 1 and 2 should hear about goat:
goat thingHappened in widget 1
goat thingHappened in GoatCancelingWidget 2

%