private IteratorResult MoveFailed() {
XPathNavigator navTemp;
Debug.Assert(this.state == IteratorState.HaveCurrentHaveNext || this.state == IteratorState.HaveCurrentNoNext);
if (this.state == IteratorState.HaveCurrentNoNext) {
// No more nodes, so iteration is complete
this.state = IteratorState.NeedCandidateCurrent;
return IteratorResult.NoMoreNodes;
}
// Make next node the new candidate node
this.state = IteratorState.HaveCandidateCurrent;
// Swap navigators in order to sometimes avoid creating clones
navTemp = this.navCurrent;
this.navCurrent = this.navNext;
this.navNext = navTemp;
return IteratorResult.NeedInputNode;
}