internal virtual XmlNode InsertNodeAt( int i, XmlNode node ) {
XmlNode oldParent;
if ( node.NodeType == XmlNodeType.Attribute )
oldParent = ((XmlAttribute)node).OwnerElement;
else
oldParent = node.ParentNode;
string nodeValue = node.Value;
XmlNodeChangedEventArgs args = parent.GetEventArgs( node, oldParent, parent, nodeValue, nodeValue, XmlNodeChangedAction.Insert );
if (args != null)
parent.BeforeEvent( args );
Nodes.Insert( i, node );
node.SetParent( parent );
if (args != null)
parent.AfterEvent( args );
return node;
}
}