private void PushAncestors() {
Debug.Assert(this.state == IteratorState.HaveCurrentHaveNext || this.state == IteratorState.HaveCurrentNoNext);
this.navStack.Reset();
do {
this.navStack.Push(this.navCurrent.Clone());
}
while (this.navCurrent.MoveToParent());
// Pop the root of the tree, since MoveToFollowing calls will never return it
this.navStack.Pop();
}
}