public OutpostModuleInfo(OutpostModuleInfo original) { Name = original.Name; moduleFlags = new HashSet <string>(original.moduleFlags); allowAttachToModules = new HashSet <string>(original.allowAttachToModules); allowedLocationTypes = new HashSet <string>(original.allowedLocationTypes); SerializableProperties = new Dictionary <string, SerializableProperty>(); GapPositions = original.GapPositions; foreach (KeyValuePair <string, SerializableProperty> kvp in original.SerializableProperties) { SerializableProperties.Add(kvp.Key, kvp.Value); if (SerializableProperty.GetSupportedTypeName(kvp.Value.PropertyType) != null) { kvp.Value.TrySetValue(this, kvp.Value.GetValue(original)); } } }