ensure method(obj, key) can't mutate the loop.

- [ ] write a test
- [ ] update commit message