/// <summary>
        /// Saves the component specific data to the specified save game node.
        /// </summary>
        /// <param name="node">The parent node.</param>
        public void SaveGame(XmlNode node)
        {
            foreach (ICustomBlackbirdComponent component in this.Values)
            {
                IBlackbirdSavegameComponent sim = component as IBlackbirdSavegameComponent;

                if (sim != null)
                {
                    XmlElement el = node.OwnerDocument.CreateElement(sim.Id);
                    node.AppendChild(el);
                    sim.SaveGame(el);
                }
            }
        }
        /// <summary>
        /// Loads the component specific data from the specified save game node.
        /// </summary>
        /// <param name="node">The parent node.</param>
        public void LoadGame(XmlNode node)
        {
            foreach (XmlNode component in node.ChildNodes)
            {
                if (this.ContainsKey(component.Name))
                {
                    IBlackbirdSavegameComponent sim = this[component.Name] as IBlackbirdSavegameComponent;

                    if (sim != null)
                    {
                        sim.LoadGame(component);
                    }
                }
            }
        }