/// <summary>
 ///  constructor preps for serialization
 /// </summary>
 /// <param name="parents"></param>
 /// <param name="serializer"></param>
 public SerializableUniverse(IList parents, Serializer serializer)
 {
     this.serializer = serializer;
     foreach (Snippet snippet in parents)
     {
         this.topLevelIds.Add(snippet.Id);
         Handle(snippet);
     }
 }
        /// <summary>
        ///  constructor preps for serialization
        /// </summary>
        /// <param name="parents"></param>
        /// <param name="serializer"></param>
        public SerializableUniverse(List<Snippet> parents, Serializer serializer)
        {
            this.serializer = serializer;
            foreach (Snippet snippet in parents)
            {
                this.topLevelIds.Add(snippet.Id);
                Handle(snippet);
            }

            // now handle the other bits, which are the properties, propertySets and unknown bit
            foreach (Snippet snippet in Universe.Instance.propertiesPaneHolder.getProperties())
            {
                propertyIds.Add(snippet.Id);
            }

            foreach (Snippet snippet in Universe.Instance.propertiesPaneHolder.getPropertySets())
            {
                propertySetIds.Add(snippet.Id);
            }

            UnknownPieceToReserialize = Universe.Instance.ModelGateway.UnknownPieceToReserialize;
        }
        public static SerializableUniverse Restore(string path, 
            Serializer serializer,
            Snippet where,
            bool merge)
        {
            Logger.Log("Restoring from " + path);

            DateTime marker = DateTime.Now;

            SerializableUniverse retVal = null;
            // exceptions just get thrown up
            retVal = Restore(path,serializer);

            Logger.LogTimer(marker, "Disk restore");

            retVal.Restore(where,merge);
            return retVal;
        }
 public static SerializableUniverse Restore(string path, Serializer serializer)
 {
     SerializableUniverse retVal = serializer.Restore(path);
     return retVal;
 }