While we're here, the name of this macro is somewhat poorly chosen.  'Walk' implies it just iterates but it also mutates it.  Can you address that in a follow-up commit?