public virtual object Clone()
{
NodeList list = (NodeList) MemberwiseClone();
list.first = null;
foreach (Node node in this) {
list.Append((Node) node.Clone());
}
return list;
}