/// <summary> /// Replaces all nodes with the given node, if any. /// </summary> /// <param name="node">The node to insert, if any.</param> /// <param name="suppressObservers">If mutation observers should be surpressed.</param> internal void ReplaceAll(Node node, Boolean suppressObservers) { if (node != null) { _owner.AdoptNode(node); } var removedNodes = new NodeList(_children); var addedNodes = new NodeList(); if (node != null) { if (node.NodeType == NodeType.DocumentFragment) { addedNodes.AddRange(node._children); } else { addedNodes.Add(node); } } for (int i = 0; i < removedNodes.Length; i++) { RemoveChild(removedNodes[i], true); } for (int i = 0; i < addedNodes.Length; i++) { InsertBefore(addedNodes[i], null, true); } if (!suppressObservers) { _owner.QueueMutation(MutationRecord.ChildList( target: this, addedNodes: addedNodes, removedNodes: removedNodes)); } }