macro_rules! Aggregate {
    (

        $( #[$attr:meta] )*
        $pub:vis
        struct $aggregate:ident {
            #[serde(skip_deserializing,skip_serializing)]
            events: std::collections::VecDeque<std::boxed::Box<dyn Message>>,
            $(#[$field_attr:meta])*
            $($field_pub:vis $field_name:ident :$field_type:ty),*
        $(,)?}
    ) => { ... };
}