This comment is not correct.

Firstly, even if we could have `&'a mut self` we would not want it: it would mean that the references had to be used entirely disjointly, so something like

```rust
let v: ~[(&K, &mut V)] = hashmap.mut_iter().to_owned_vec();
```

would not work.

Secondly, the problem is now the compile cannot tell that the borrows from `get_key_ref` and `get_val_ref` are always disjoint, so borrowing `k` (without the transmute) is freezing `self.map` and so the (attempted) mutable borrow is illegal.