macro_rules! gen_params {
(@ $builder:ident $key:literal: $value:expr $(, $($rest:tt)*)?) => { ... };
(@ $builder:ident $key:literal?: $value:expr $(, $($rest:tt)*)?) => { ... };
(@ $builder:ident $value:expr $(, $($rest:tt)*)?) => { ... };
(@ $builder:ident $(,)?) => { ... };
($($args:tt)*) => { ... };
}