public bool MoveToNextSibling() {
#if DEBUG
if (lastMove == Moves.Next) {
Debug.Assert(lastResult, "MoveToParent() must be called after MoveToNextSibling() failed");
Debug.Assert(NodeType != XPathNodeType.Element, "MoveToFirstChild() was not called on the element. Did you miss SkipNode()?");
}
#endif
bool result;
do {
StepOffNode();
result = ReadNextSibling();
} while (result && (NodeType == XPathNodeType.Comment || NodeType == XPathNodeType.ProcessingInstruction));
SetLastMove(Moves.Next, result);
return result;
}