/// <summary>
/// Adds another OverlayElement to this container.
/// </summary>
/// <param name="element"></param>
public virtual void AddChildImpl(OverlayElement element)
{
Debug.Assert(!children.ContainsKey(element.Name), string.Format("Child with name '{0}' already defined.", element.Name));
// add to lookup table and list
children.Add(element.Name, element);
childList.Add(element);
// inform this child about his/her parent and zorder
element.NotifyParent(this, overlay);
element.NotifyZOrder(zOrder + 1);
}