private Writer(XmlTextWriter xtw, IEnumerable <KeyValuePair <IManager, SerializationData> > managerInfo)
            {
                xtw.Formatting = Formatting.Indented;
                xtw.WriteStartDocument();
                xtw.WriteComment("AUTOMATICALLY GENERATED - DO NOT EDIT THIS FILE");

                this.currentDoc = new XElement(
                    "Miyagi",
                    new XAttribute("Version", Assembly.GetExecutingAssembly().GetName().Version.ToString()));
                this.redirects = new XElement("Redirects");

                foreach (var managerData in managerInfo)
                {
                    if (managerData.Value.HasData)
                    {
                        var managerElement     = new XElement("Manager", new XAttribute("Type", managerData.Key.Type));
                        SerializationData data = managerData.Value;
                        if (data.HasData)
                        {
                            foreach (var entry in data.Where(entry => entry.Value != null))
                            {
                                this.AddObjectToXmlDoc(managerElement, entry.Value, entry.Key);
                            }
                        }

                        this.currentDoc.Add(managerElement);
                    }
                }

                this.currentDoc.Add(this.redirects);
                this.currentDoc.WriteTo(xtw);
            }
            private void ReadManagers()
            {
                foreach (var managerElement in this.currentDoc.Descendants("Manager"))
                {
                    string managerType = managerElement.Attribute("Type").Value;
                    var    data        = new SerializationData();
                    var    manager     = this.system.GetManager(managerType);

                    foreach (var element in managerElement.Elements())
                    {
                        data.Add(element.Name.ToString(), this.GetObjectFromXmlDoc(element, manager));
                    }

                    manager.LoadSerializationData(data);
                }
            }
 void IManager.SaveSerializationData(SerializationData info)
 {
 }
 void IManager.LoadSerializationData(SerializationData data)
 {
 }