Sadly, future hygienic changes will prevent this macro from compiling. Right now I think that function arguments are not hygienic (which is a bug).

To fix this, the macro just needs to take the enclosed scope as arguments instead of using the explicit identifiers. This means that the macro will need to look something like:

```rust
macro_rules!( ($self:expr, $n:expr) => ({ ... }) )
```
```