public override bool MoveToNext() {
XmlNode sibling = NextSibling(source);
if (sibling == null) {
return false;
}
if (sibling.IsText) {
if (source.IsText) {
sibling = NextSibling(TextEnd(sibling));
if (sibling == null) {
return false;
}
}
}
XmlNode parent = ParentNode(sibling);
Debug.Assert(parent != null);
while (!IsValidChild(parent, sibling)) {
sibling = NextSibling(sibling);
if (sibling == null) {
return false;
}
}
source = sibling;
return true;
}