macro_rules! func_internal {
(
@internal
$type:ident
$([$($cap_ident:ident $(: $cap_expr:expr)?),*])?
$(|$($param_ident:ident $(: $param_ty:ty)?),*|)?
$(-> $r_type:ty)?
$body:block
) => { ... };
}