macro_rules! impl_aggregate {
($ty:ty, $entity:ident, $replay:ident) => { ... };
($ty:ty, $entity:ident, $replay:ident, aggregate_type = $aggregate_type:literal) => { ... };
($ty:ty, $entity:ident, $replay:ident, $err:ty) => { ... };
($ty:ty, $entity:ident, $replay:ident, $err:ty, aggregate_type = $aggregate_type:literal) => { ... };
}