Oftentime we have code like this, e.g. in a protocol:
Most protocols deal mainly with Message types, so adding down(Message msg) and up(Message msg) would simplify the code above to:
This would also lead to a (massive) reduction of Event class creations.
Downside: this requires a lot of code changes (mainly in protocols)!