macro_rules! event {
(target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } ) => { ... };
(target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => { ... };
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => { ... };
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => { ... };
(target: $target:expr, $lvl:expr, { $($fields:tt)* } ) => { ... };
(target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => { ... };
(target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => { ... };
(target: $target:expr, $lvl:expr, $($arg:tt)+ ) => { ... };
(parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => { ... };
(parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => { ... };
(parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($field:tt)*) => { ... };
(parent: $parent:expr, $lvl:expr, ?$($k:ident).+ = $($field:tt)*) => { ... };
(parent: $parent:expr, $lvl:expr, %$($k:ident).+ = $($field:tt)*) => { ... };
(parent: $parent:expr, $lvl:expr, $($k:ident).+, $($field:tt)*) => { ... };
(parent: $parent:expr, $lvl:expr, %$($k:ident).+, $($field:tt)*) => { ... };
(parent: $parent:expr, $lvl:expr, ?$($k:ident).+, $($field:tt)*) => { ... };
(parent: $parent:expr, $lvl:expr, $($arg:tt)+ ) => { ... };
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => { ... };
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => { ... };
($lvl:expr, $($k:ident).+ = $($field:tt)*) => { ... };
($lvl:expr, $($k:ident).+, $($field:tt)*) => { ... };
($lvl:expr, ?$($k:ident).+, $($field:tt)*) => { ... };
($lvl:expr, %$($k:ident).+, $($field:tt)*) => { ... };
($lvl:expr, ?$($k:ident).+) => { ... };
($lvl:expr, %$($k:ident).+) => { ... };
($lvl:expr, $($k:ident).+) => { ... };
( $lvl:expr, $($arg:tt)+ ) => { ... };
}