macro_rules! declare_stack_allocator_struct {
    (@as_expr $expr : expr) => { ... };
    (@new_method $name : ident, $freelist_size : tt) => { ... };
    (@new_calloc_method $name : ident, $freelist_size : tt) => { ... };
    ($name :ident, $freelist_size : tt, malloc) => { ... };
    ($name :ident, $freelist_size : tt, calloc) => { ... };
    ($name :ident, $freelist_size : tt, stack) => { ... };
    ($name :ident, $freelist_size : expr, global) => { ... };
}