macro_rules! rand_gen_builder {
    ( @gen { [ $($cur:tt)* ] } ) => { ... };
    ( @gen { [ $($cur:tt)* ] where { $($f:ident $(= $a:expr)?),* } } ) => { ... };
    ( @gen { [ $($cur:tt)* ] where { $($f:ident $(= $a:expr)?),*, } } ) => { ... };
    ( @vec @gen { $($x:tt)* } @rest ; $($rest:tt)* ) => { ... };
    ( @vec @gen { $($cur:tt)* } @rest $tt:tt $($rest:tt)* ) => { ... };
    ( @vec @gen { $($x:tt)* } @len { $($len:tt)* }) => { ... };
    ( @gen { $($x:tt)* } ) => { ... };
    ( @gen { $($cur:tt)* } @rest where { $($where:tt)* } ) => { ... };
    ( @gen { $($cur:tt)* } @rest $tt:tt $($rest:tt)* ) => { ... };
    ( @gen { $($cur:tt)* } @where { $($f:ident $(= $a:expr)?),* } @rest ) => { ... };
    ( @gen { $($cur:tt)* } @where { $($f:ident $(= $a:expr)?),*, } @rest ) => { ... };
    ( @gen { $($x:tt)* } @rest ) => { ... };
}