macro_rules! widget { ( #[widget($Widget:ident $(, init=$init:ident)? $(, drop=$drop:ident)?)] $vis:vis struct $name:ident { $($( $(#[property$(($($attrs:tt)*))?])? $field_name:ident : $field_ty:ty ),+ $(,)?)? } ) => { ... }; }