pub trait REventManager<A: Aggregate> {
// Required methods
fn get_events(&mut self) -> VecDeque<Box<dyn Message>>;
fn set_events(&mut self, events: VecDeque<Box<dyn Message>>);
// Provided method
fn event_hook(&mut self, aggregate: &mut A) { ... }
}