macro_rules! throw {
    ($w:ident$(::$i:ident)*$(($($tt:tt)*))?) => { ... };
    ($l:literal) => { ... };
    ($l:literal, $($tt:tt)*) => { ... };
}