Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Bool2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Bool2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Bool2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Byte2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Byte2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Byte2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/DateTime2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/DateTime2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/DateTime2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Doubld2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Doubld2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Doubld2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Float2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Float2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Float2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Int2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Int2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Int2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Long2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Long2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Long2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/SByte2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/SByte2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/SByte2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Short2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Short2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Short2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/String2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/String2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/String2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Type2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Type2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/Type2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/UInt2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/UInt2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/UInt2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/ULong2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/ULong2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/ULong2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/UShort2DebugStringFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/UShort2DebugStringFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/DebugString/Formatters/UShort2DebugStringFormatter.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.DebugString.Formatters {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs	(revision 1623)
@@ -3,4 +3,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using System.Globalization;
 using System.Text;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/DictionaryDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/DictionaryDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/DictionaryDecomposer.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumDecomposer.cs	(revision 1623)
@@ -3,4 +3,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumerableDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumerableDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumerableDecomposer.cs	(revision 1623)
@@ -5,4 +5,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/KeyValuePairDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/KeyValuePairDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/KeyValuePairDecomposer.cs	(revision 1623)
@@ -5,4 +5,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Reflection;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/NumberEnumerable2StringDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/NumberEnumerable2StringDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/NumberEnumerable2StringDecomposer.cs	(revision 1623)
@@ -6,4 +6,5 @@
 using System.Globalization;
 using System.Text;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/DataMemberAccessor.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/DataMemberAccessor.cs	(revision 1623)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/DataMemberAccessor.cs	(revision 1623)
@@ -0,0 +1,69 @@
+﻿using System;
+using System.Reflection;
+
+namespace HeuristicLab.Persistence.Default.Decomposers.Storable {
+
+  public class DataMemberAccessor {
+    
+    public readonly Func<object> Get;    
+    public readonly Action<object> Set;
+    public readonly string Name;
+    public readonly object DefaultValue;
+
+    public DataMemberAccessor(
+        MemberInfo memberInfo,
+        StorableAttribute storableAttribute,
+        object obj) {
+      if (memberInfo.MemberType == MemberTypes.Field) {
+        FieldInfo fieldInfo = (FieldInfo)memberInfo;
+        Get = () => fieldInfo.GetValue(obj);
+        Set = value => fieldInfo.SetValue(obj, value);
+      } else if (memberInfo.MemberType == MemberTypes.Property) {
+        PropertyInfo propertyInfo = (PropertyInfo)memberInfo;
+        if (!propertyInfo.CanRead || !propertyInfo.CanWrite) {
+          throw new NotSupportedException(
+            "Storable properties must implement both a Get and a Set Accessor. ");
+        }
+        Get = () => propertyInfo.GetValue(obj, null);
+        Set = value => propertyInfo.SetValue(obj, value, null);
+      } else {
+        throw new NotSupportedException(
+          "The Storable attribute can only be applied to fields and properties.");
+      }
+      Name = storableAttribute.Name ?? memberInfo.Name;
+      DefaultValue = storableAttribute.DefaultValue;
+    }
+
+    public DataMemberAccessor(
+        string name, object defaultValue,
+        Func<object> getter, Action<object> setter) {
+      Name = name;
+      DefaultValue = defaultValue;
+      Get = getter;
+      Set = setter;
+    }
+
+    public DataMemberAccessor(object o) {
+      Name = null;
+      DefaultValue = null;
+      Get = () => o;
+      Set = null;
+    }
+
+    public DataMemberAccessor(object o, string name) {
+      Name = name;
+      DefaultValue = null;
+      Get = () => o;
+      Set = null;
+    }
+
+
+    public override string ToString() {
+      return String.Format("DataMember({0}, {1}, {2}, {3})",
+        Name,
+        DefaultValue ?? "<null>",
+        Get.Method, Set.Method);
+    }
+  }
+
+}
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/EmptyStorableClassAttribute.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/EmptyStorableClassAttribute.cs	(revision 1623)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/EmptyStorableClassAttribute.cs	(revision 1623)
@@ -0,0 +1,40 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace HeuristicLab.Persistence.Default.Decomposers.Storable {
+
+
+  [AttributeUsage(
+    AttributeTargets.Class,
+    AllowMultiple = false,
+    Inherited = false)]
+  public class EmptyStorableClassAttribute : Attribute {
+
+    private static readonly Dictionary<Type, bool> emptyTypeInfo = new Dictionary<Type, bool>();
+
+    public static bool IsEmptyStorable(Type type) {
+      if (emptyTypeInfo.ContainsKey(type))
+        return emptyTypeInfo[type];
+      foreach (var attribute in type.GetCustomAttributes(false)) {
+        EmptyStorableClassAttribute empty = attribute as EmptyStorableClassAttribute;
+        if (empty != null) {
+          emptyTypeInfo.Add(type, true);
+          return true;
+        }
+      }
+      int nFields = 0;
+      foreach (MemberInfo memberInfo in type.GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) {
+        if (memberInfo.MemberType == MemberTypes.Field ||
+          memberInfo.MemberType == MemberTypes.Property)
+          nFields += 1;
+      }
+      if (nFields == 0) {
+        emptyTypeInfo.Add(type, true);
+        return true;
+      }
+      emptyTypeInfo.Add(type, false);
+      return false;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/StorableAttribute.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/StorableAttribute.cs	(revision 1623)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/StorableAttribute.cs	(revision 1623)
@@ -0,0 +1,52 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace HeuristicLab.Persistence.Default.Decomposers.Storable {
+
+  [AttributeUsage(
+    AttributeTargets.Field | AttributeTargets.Property,
+    AllowMultiple = false,
+    Inherited = false)]
+  public class StorableAttribute : Attribute {
+
+    public string Name { get; set; }
+    public object DefaultValue { get; set; }
+
+    private const BindingFlags instanceMembers =
+      BindingFlags.Instance |
+      BindingFlags.Public |
+      BindingFlags.NonPublic |
+      BindingFlags.DeclaredOnly;
+
+    public static IEnumerable<KeyValuePair<StorableAttribute, MemberInfo>> GetStorableMembers(Type type) {
+      return GetStorableMembers(type, true);
+    }
+
+    public static IEnumerable<KeyValuePair<StorableAttribute, MemberInfo>>
+        GetStorableMembers(Type type, bool inherited) {
+      if (type.BaseType != null)
+        foreach (var pair in GetStorableMembers(type.BaseType))
+          yield return pair;
+      foreach (MemberInfo memberInfo in type.GetMembers(instanceMembers)) {
+        foreach (object attribute in memberInfo.GetCustomAttributes(false)) {
+          StorableAttribute storableAttribute =
+            attribute as StorableAttribute;
+          if (storableAttribute != null) {
+            yield return new KeyValuePair<StorableAttribute, MemberInfo>(storableAttribute, memberInfo);
+          }
+        }
+      }
+    }
+
+    public static Dictionary<string, DataMemberAccessor> GetStorableAccessors(object obj) {
+      Dictionary<string, DataMemberAccessor> storableAccessors =
+        new Dictionary<string, DataMemberAccessor>();
+      foreach (KeyValuePair<StorableAttribute, MemberInfo> pair in GetStorableMembers(obj.GetType())) {
+        storableAccessors.Add(pair.Value.Name,
+          new DataMemberAccessor(pair.Value, pair.Key, obj));
+      }
+      return storableAccessors;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/StorableDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/StorableDecomposer.cs	(revision 1623)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Storable/StorableDecomposer.cs	(revision 1623)
@@ -0,0 +1,51 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Persistence.Interfaces;
+using HeuristicLab.Persistence.Core;
+
+namespace HeuristicLab.Persistence.Default.Decomposers.Storable {
+
+  [EmptyStorableClass]
+  public class StorableDecomposer : IDecomposer {
+
+    public int Priority {
+      get { return 200; }
+    }
+
+    public bool CanDecompose(Type type) {
+      return StorableAttribute.GetStorableMembers(type, false).Count() > 0 ||
+        EmptyStorableClassAttribute.IsEmptyStorable(type);
+
+    }
+
+    public IEnumerable<Tag> CreateMetaInfo(object o) {
+      return new Tag[] { };
+    }
+
+    public IEnumerable<Tag> Decompose(object obj) {
+      foreach (var mapping in StorableAttribute.GetStorableAccessors(obj)) {
+        yield return new Tag(mapping.Key, mapping.Value.Get());
+      }
+    }
+
+    public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
+      return Activator.CreateInstance(type, true);
+    }
+
+    public void Populate(object instance, IEnumerable<Tag> objects, Type type) {
+      var memberDict = new Dictionary<string, Tag>();
+      IEnumerator<Tag> iter = objects.GetEnumerator();
+      while (iter.MoveNext()) {
+        memberDict.Add(iter.Current.Name, iter.Current);
+      }
+      foreach (var mapping in StorableAttribute.GetStorableAccessors(instance)) {
+        if (memberDict.ContainsKey(mapping.Key)) {
+          mapping.Value.Set(memberDict[mapping.Key].Value);
+        } else if (mapping.Value.DefaultValue != null) {
+          mapping.Value.Set(mapping.Value.DefaultValue);
+        }
+      }
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/StorableDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/StorableDecomposer.cs	(revision 1616)
+++ 	(revision )
@@ -1,51 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Persistence.Interfaces;
-using HeuristicLab.Persistence.Core;
-
-namespace HeuristicLab.Persistence.Default.Decomposers {
-
-  [EmptyStorableClass]
-  public class StorableDecomposer : IDecomposer {
-
-    public int Priority {
-      get { return 200; }
-    }
-
-    public bool CanDecompose(Type type) {
-      return StorableAttribute.GetStorableMembers(type, false).Count() > 0 ||
-        EmptyStorableClassAttribute.IsEmptyStorable(type);
-
-    }
-
-    public IEnumerable<Tag> CreateMetaInfo(object o) {
-      return new Tag[] { };
-    }
-
-    public IEnumerable<Tag> Decompose(object obj) {
-      foreach (var mapping in StorableAttribute.GetStorableAccessors(obj)) {
-        yield return new Tag(mapping.Key, mapping.Value.Get());
-      }
-    }
-
-    public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
-      return Activator.CreateInstance(type, true);
-    }
-
-    public void Populate(object instance, IEnumerable<Tag> objects, Type type) {
-      var memberDict = new Dictionary<string, Tag>();
-      IEnumerator<Tag> iter = objects.GetEnumerator();
-      while (iter.MoveNext()) {
-        memberDict.Add(iter.Current.Name, iter.Current);
-      }
-      foreach (var mapping in StorableAttribute.GetStorableAccessors(instance)) {
-        if (memberDict.ContainsKey(mapping.Key)) {
-          mapping.Value.Set(memberDict[mapping.Key].Value);
-        } else if (mapping.Value.DefaultValue != null) {
-          mapping.Value.Set(mapping.Value.DefaultValue);
-        }
-      }
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/TypeDecomposer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/TypeDecomposer.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/TypeDecomposer.cs	(revision 1623)
@@ -3,4 +3,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Decomposers {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/DoubleList2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/DoubleList2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/DoubleList2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using HeuristicLab.Persistence.Core;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Compact {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/IntList2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/IntList2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Compact/IntList2XmlFormatter.cs	(revision 1623)
@@ -3,4 +3,5 @@
 using System;
 using HeuristicLab.Persistence.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Compact {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Bool2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Bool2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Bool2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Byte2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Byte2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Byte2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DateTime2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DateTime2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DateTime2XmlFormatter.cs	(revision 1623)
@@ -2,4 +2,5 @@
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Interfaces;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Decimal2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Decimal2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Decimal2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Double2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Double2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Double2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Float2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Float2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Float2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Int2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Int2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Int2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Long2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Long2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Long2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/SByte2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/SByte2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/SByte2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Short2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Short2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Short2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Text;
 using System.Text.RegularExpressions;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/UInt2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/UInt2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/UInt2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/ULong2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/ULong2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/ULong2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/UShort2XmlFormatter.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/UShort2XmlFormatter.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/UShort2XmlFormatter.cs	(revision 1623)
@@ -4,4 +4,5 @@
 using System.Reflection;
 using System.Globalization;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs	(revision 1623)
@@ -1,4 +1,5 @@
 ﻿using HeuristicLab.Persistence.Interfaces;
 using HeuristicLab.Persistence.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs	(revision 1616)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs	(revision 1623)
@@ -2,4 +2,5 @@
 using HeuristicLab.Persistence.Core;
 using System.Text;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml {
