macro_rules! dep_obj {
(
$(
$vis:vis fn $name:ident (self as $this:ident, $arena:ident : $Arena:ty) -> $(optional(trait $opt_tr:tt))? $((trait $tr:tt))? $(optional($opt_ty:ty))? $(($ty:ty))? {
if mut { $field_mut:expr } else { $field:expr }
}
)*
) => { ... };
}