macro_rules! capabilities {
    ($name:ident, $next:ident, $($rest:ident,)*) => { ... };
    ($prev:ident, $name:ident, $($rest:ident,)* [$($tt:tt)*]) => { ... };
    ($prev:ident, [$($name:ident = $value:expr;)*]) => { ... };
}