IIRC, yes, its still needed here.

For stupid historical reasons a TreeWalk starts with an empty tree iterator in the first slot.  We don't want that here, so we have to throw it away with a reset() call.

I keep meaning to change TreeWalk to remove that initial empty tree, but I haven't had a chance to yet.  The initial empty tree was to help ObjectWalk, but it turns out ObjectWalk no longer uses TreeWalk (it uses the CanonicalTreeParser directly for performance reasons) and the initial empty tree is *never* useful.  Everyone has to reset to discard it.  So we should just drop it from the initial object.