public override bool MoveToFirstChild() {
XmlNode child;
switch (source.NodeType) {
case XmlNodeType.Element:
child = FirstChild(source);
if (child == null) {
return false;
}
break;
case XmlNodeType.DocumentFragment:
case XmlNodeType.Document:
child = FirstChild(source);
if (child == null) {
return false;
}
while (!IsValidChild(source, child)) {
child = NextSibling(child);
if (child == null) {
return false;
}
}
break;
default:
return false;
}
source = child;
return true;
}