internal void Insert(Node node, int index, bool suppressObservers = false) { var addedNodes = new List<Node>(); if (node is DocumentFragment) { addedNodes.Capacity = node.ChildNodes.Count; while (node.HasChildNodes()) { var item = node.ChildNodes[0]; node.Remove(item, true); addedNodes.Add(item); item.ParentNode = this; if (index == -1) ChildNodes.Add(item); else ChildNodes.Insert(index++, item); } } else { addedNodes.Add(node); node.ParentNode = this; if (index == -1) ChildNodes.Add(node); else ChildNodes.Insert(index++, node); } }