macro_rules! delegate_method {
( $fld:ident as $fldty:ty : ) => { ... };
( $fld:ident : $($rest:tt)*) => { ... };
( $fld_last:ident as $fldty_last:ty : $fld:ident : $($rest:tt)*) => { ... };
( $fld_last:ident as $fldty_last:ty : $fld:ident as $fldty:ty: $($rest:tt)*) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident (self) $(-> $r:ty)* ; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident (self) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident (&self) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident (&self) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident (&mut self) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident (&mut self) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident (self, $( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident (self, $( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident (&self, $( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident (&self, $( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident (&mut self, $( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident (&mut self, $( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : fn $fcn:ident ($( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
( $fld:ident as $fldty:ty : pub fn $fcn:ident ($( $a:ident : $at:ty ),* ) $(-> $r:ty)*; $($rest:tt)* ) => { ... };
}