public bool MoveToParent() {
Debug.Assert(lastMove == Moves.Next && !lastResult, "All siblings must be visited before moving to parent");
// We shouldn't call StepOffNode() here because we already left last node.
bool result = true; // Frankly, we should return false for the root
SetLastMove(Moves.Parent, result);
return result;
}