macro_rules! list_decoder {
($ty:ty, $fname:ident, { $($key:expr => $b:tt),* }) => { ... };
(@internal $dest:ident, $input:ident, { $name:ident, $dt:ident, $def:expr }) => { ... };
(@internal $dest:ident, $input:ident, { $name:ident, $dt:ident, $def:expr, $optional:expr }) => { ... };
}