macro_rules! binary_tower {
    ($subfield_name:ident($subfield_typ:ty) < $name:ident($typ:ty)) => { ... };
    ($subfield_name:ident($subfield_typ:ty) < $name:ident($typ:ty) $(< $extfield_name:ident($extfield_typ:ty))+) => { ... };
    ($subfield_name:ident($subfield_typ:ty) < @$degree:expr => $name:ident($typ:ty)) => { ... };
    ($subfield_name:ident($subfield_typ:ty) < @$degree:expr => $name:ident($typ:ty) $(< $extfield_name:ident($extfield_typ:ty))+) => { ... };
}