I'll propose the change to NameConflictTreeWalk. Only one confirmation needed:
In the third step you mention "before popping". After reading the code I think "t.back(t.matchShift);t.matchShift = 0" is your "pop" implementation, right?