macro_rules! choose {
(@props $c:ident) => { ... };
(@props $c:ident, $key:ident: $value:expr) => { ... };
(@props $c:ident, $key:ident: $value:expr, $($tail:tt)*) => { ... };
(@prop $c:ident, otherwise, $value:expr) => { ... };
(@prop $c:ident, when, $conds:expr) => { ... };
($key:ident: $value:tt) => { ... };
($key:ident: $value:tt, $($tail:tt)*) => { ... };
}