This look like it can be completely safe if you take `mut self` and have `first: Option<~Chunk>` in the struct.