static bool ProcessElement(DomNode item) { // Always retain html > head and doctype // (Unfortunately, we must since we can't tell whether the // document is being used as a master.) if (item.NodeType == DomNodeType.DocumentType) { item.Retain(); return(true); } if (item.NodeName == "head") { item.Retain(); // TODO Head can be retained in such a way that its // children don't need retaining (performance) foreach (var m in ((DomElement)item).Elements) { m.Retain(); } return(true); } if (ConsiderChildren(item) || (item.IsElement && item is HxlElement)) { item.Retain(); return(true); } else { return(false); } }