macro_rules! write_fields {
($wr:expr) => { ... };
($wr:expr $(,[$($more:tt)+])*,) => { ... };
($wr:expr, [const; $bits:expr, $value:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [bool; $value:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [number $name:ident; $bits:expr, $pair:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [number_signed $name:ident; $bits:expr, $pair:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [register $name:ident; $pair:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [pcoffset; $bits:expr, $pair:expr, $table:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [$name:ident; $bits:expr, $pair:expr, $value:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr, [signed $name:ident; $bits:expr, $pair:expr, $value:expr] $(,[$($more:tt)+])*) => { ... };
($wr:expr,
[$name:ident; $bits:expr, $pair:expr, $value:expr, $func:ident]
$(,[$($more:tt)+])*) => { ... };
}