macro_rules! define_protocol {
($version: literal, $packett: ident, $rawpackett: ident, $rawdt: ident, $kindt: ident => {
$($nam: ident, $id: literal, $state: ident, $direction: ident => $body: ident {
$($fnam: ident: $ftyp: ty),* }),*
}
) => { ... };
}