I totally get what's going on here, assignment is an iterator, and so we deref it to get a pointer... but man, this construct looks funky... wouldn't the code be easier to read if you made a loop local variable that was actually an Assignment* and was set at the top of the loop?