public void AddChild(Node child)
{
if (this.Children[child.Id] != null)
throw new Exception("Child with the same name already exists.");
this.Children[child.Id] = child;
this.ChildrenList.Add(child);
child.Parent = this;
this.ChildAdded.Fire(this, child);
}