private void ParseChildren(XmlReader reader, Group group) { while (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Group": using (var subReader = reader.ReadSubtree()) group.Add(ParseGroup(subReader)); reader.ReadEndElement(); break; case "Entry": using (var subReader = reader.ReadSubtree()) group.Add(ParseEntry(subReader)); reader.ReadEndElement(); break; default: reader.Skip(); break; } } group.Sort(); }