macro_rules! node {
( $key:ident $( [ $tail:tt ] )* ) => { ... };
( .. $( [ $tail:tt ] )* ) => { ... };
( @part($part:expr) [ $index:literal ] $( [ $tail:tt ] )* ) => { ... };
( @part($part:expr) [ $key:ident ] $( [ $tail:tt ] )* ) => { ... };
( @part($part:expr) ) => { ... };
}