public override bool MoveToFirst() {
if (source.NodeType == XmlNodeType.Attribute) {
return false;
}
XmlNode parent = ParentNode(source);
if (parent == null) {
return false;
}
XmlNode sibling = FirstChild(parent);
Debug.Assert(sibling != null);
while (!IsValidChild(parent, sibling)) {
sibling = NextSibling(sibling);
if (sibling == null) {
return false;
}
}
source = sibling;
return true;
}