Index: /trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs	(revision 1703)
@@ -4,4 +4,5 @@
 using System.Linq;
 using System.Windows.Forms;
+using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Default.Xml;
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/ReflectionTools.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/ReflectionTools.cs	(revision 1703)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/ReflectionTools.cs	(revision 1703)
@@ -0,0 +1,20 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Reflection;
+
+namespace HeuristicLab.Persistence.Auxiliary {
+
+  internal class ReflectionTools {
+
+    public static bool HasDefaultConstructor(Type t) {
+      return t.GetConstructor(
+        BindingFlags.Instance |
+        BindingFlags.NonPublic |
+        BindingFlags.Public,
+        null, Type.EmptyTypes, null) != null;
+    }
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeExtensions.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeExtensions.cs	(revision 1703)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeExtensions.cs	(revision 1703)
@@ -0,0 +1,16 @@
+﻿using System;
+using System.Text;
+
+namespace HeuristicLab.Persistence.Auxiliary {
+
+  public static class TypeExtensions {
+
+    public static string VersionInvariantName(this Type type) {
+      StringBuilder sb = new StringBuilder();
+      TypeStringBuilder.BuildVersionInvariantName(type, sb);
+      return sb.ToString();
+    }
+
+  }
+
+}
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeStringBuilder.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeStringBuilder.cs	(revision 1703)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeStringBuilder.cs	(revision 1703)
@@ -0,0 +1,36 @@
+﻿using System;
+using System.Text;
+
+namespace HeuristicLab.Persistence.Auxiliary {
+
+  internal static class TypeStringBuilder {
+
+    internal static void BuildDeclaringTypeChain(Type type, StringBuilder sb) {
+      if (type.DeclaringType != null) {
+        BuildDeclaringTypeChain(type.DeclaringType, sb);
+        sb.Append(type.DeclaringType.Name).Append('+');
+      }
+    }
+
+    internal static void BuildVersionInvariantName(Type type, StringBuilder sb) {
+      sb.Append(type.Namespace).Append('.');
+      BuildDeclaringTypeChain(type, sb);
+      sb.Append(type.Name);
+      if (type.IsGenericType) {
+        sb.Append("[");
+        Type[] args = type.GetGenericArguments();
+        for (int i = 0; i < args.Length; i++) {
+          sb.Append("[");
+          BuildVersionInvariantName(args[i], sb);
+          sb.Append("],");
+        }
+        if (args.Length > 0)
+          sb.Remove(sb.Length - 1, 1);
+        sb.Append("]");
+      }
+      sb.Append(", ").Append(type.Assembly.GetName().Name);
+    }
+
+  }
+
+}
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 1703)
@@ -9,4 +9,5 @@
 using HeuristicLab.Tracing;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Auxiliary;
 
 namespace HeuristicLab.Persistence.Core {
@@ -50,5 +51,5 @@
           Logger.Warn("Could not load settings.", e);
         }
-      }      
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Core/DeSerializer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/DeSerializer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Core/DeSerializer.cs	(revision 1703)
@@ -3,4 +3,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using HeuristicLab.Persistence.Core.Tokens;
+using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Tracing;
 using System.Reflection;
@@ -76,5 +77,5 @@
             Logger.Error(String.Format(
               "Cannot load type \"{0}\", falling back to loading with partial name", typeMapping.TypeName));
-            string[] typeNameParts = typeMapping.TypeName.Split(new[] {','});
+            string[] typeNameParts = typeMapping.TypeName.Split(new[] { ',' });
             Assembly a = Assembly.LoadWithPartialName(typeNameParts[typeNameParts.Length - 1].Trim());
             Array.Resize(ref typeNameParts, typeNameParts.Length - 1);
@@ -90,5 +91,5 @@
           "The serialization type cache could not be loaded.\r\n" +
           "This usualy happens when you are missing an Assembly/Plugin.", e);
-      }      
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 1703)
@@ -3,4 +3,5 @@
 using System;
 using System.Linq;
+using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Interfaces;
 using HeuristicLab.Persistence.Core.Tokens;
@@ -9,5 +10,5 @@
 using System.Runtime.InteropServices;
 
-namespace HeuristicLab.Persistence.Core {  
+namespace HeuristicLab.Persistence.Core {
 
   public class Serializer : IEnumerable<ISerializationToken> {
@@ -59,5 +60,5 @@
       this.rootName = rootName;
       this.configuration = configuration;
-      obj2id = new Dictionary<object,int>(new ReferenceEqualityComparer()) { { new object(), 0 } };
+      obj2id = new Dictionary<object, int>(new ReferenceEqualityComparer()) { { new object(), 0 } };
       typeCache = new Dictionary<Type, int>();
     }
@@ -82,5 +83,5 @@
       int typeId = typeCache[type];
       int? id = null;
-      if ( ! type.IsValueType) {
+      if (!type.IsValueType) {
         id = obj2id.Count;
         obj2id.Add(value, (int)id);
Index: unk/sources/HeuristicLab.Persistence/3.3/Core/TypeExtensions.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/TypeExtensions.cs	(revision 1702)
+++ 	(revision )
@@ -1,16 +1,0 @@
-﻿using System;
-using System.Text;
-
-namespace HeuristicLab.Persistence.Core {
-
-  public static class TypeExtensions {
-
-    public static string VersionInvariantName(this Type type) {
-      StringBuilder sb = new StringBuilder();
-      TypeStringBuilder.BuildVersionInvariantName(type, sb);
-      return sb.ToString();
-    }
-
-  }
-
-}
Index: unk/sources/HeuristicLab.Persistence/3.3/Core/TypeStringBuilder.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/TypeStringBuilder.cs	(revision 1702)
+++ 	(revision )
@@ -1,36 +1,0 @@
-﻿using System;
-using System.Text;
-
-namespace HeuristicLab.Persistence.Core {
-
-  internal static class TypeStringBuilder {
-
-    internal static void BuildDeclaringTypeChain(Type type, StringBuilder sb) {
-      if (type.DeclaringType != null) {
-        BuildDeclaringTypeChain(type.DeclaringType, sb);
-        sb.Append(type.DeclaringType.Name).Append('+');
-      }
-    }
-
-    internal static void BuildVersionInvariantName(Type type, StringBuilder sb) {
-      sb.Append(type.Namespace).Append('.');
-      BuildDeclaringTypeChain(type, sb);
-      sb.Append(type.Name);
-      if (type.IsGenericType) {
-        sb.Append("[");
-        Type[] args = type.GetGenericArguments();
-        for (int i = 0; i < args.Length; i++) {
-          sb.Append("[");
-          BuildVersionInvariantName(args[i], sb);
-          sb.Append("],");
-        }
-        if (args.Length > 0)
-          sb.Remove(sb.Length - 1, 1);
-        sb.Append("]");
-      }
-      sb.Append(", ").Append(type.Assembly.GetName().Name);
-    }
-
-  }
-
-}
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs	(revision 1703)
@@ -54,5 +54,5 @@
     }
 
-    public object CreateInstance(Type t, IEnumerable<Tag> metaInfo) {      
+    public object CreateInstance(Type t, IEnumerable<Tag> metaInfo) {
       try {
         IEnumerator<Tag> e = metaInfo.GetEnumerator();
@@ -74,5 +74,5 @@
       } catch (InvalidCastException x) {
         throw new PersistenceException("Invalid format of array metainfo.", x);
-      }      
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs	(revision 1703)
@@ -63,5 +63,5 @@
       try {
         var tagIter = metaInfo.GetEnumerator();
-        tagIter.MoveNext();      
+        tagIter.MoveNext();
         var valueIter = ((string)tagIter.Current.Value)
           .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
@@ -101,5 +101,5 @@
       } catch (InvalidCastException e) {
         throw new PersistenceException("Invalid element data during compact array deserialization", e);
-      }      
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/KeyValuePairDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/KeyValuePairDecomposer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/KeyValuePairDecomposer.cs	(revision 1703)
@@ -31,5 +31,5 @@
       Tag key, value;
       try {
-        key = new Tag("key", t.GetProperty("Key").GetValue(o, null));        
+        key = new Tag("key", t.GetProperty("Key").GetValue(o, null));
       } catch (Exception e) {
         throw new PersistenceException("Exception caught during KeyValuePair decomposition", e);
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Number2StringConverter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Number2StringConverter.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Number2StringConverter.cs	(revision 1703)
@@ -2,4 +2,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using HeuristicLab.Persistence.Core;
+using HeuristicLab.Persistence.Auxiliary;
 using System.Collections.Generic;
 using System.Reflection;
@@ -53,5 +54,5 @@
 
     public object Parse(string stringValue, Type type) {
-      try {        
+      try {
         return numberParsers[type]
           .Invoke(null,
@@ -62,5 +63,5 @@
       } catch (OverflowException e) {
         throw new PersistenceException("Overflow during number parsing.", e);
-      } 
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/StackDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/StackDecomposer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/StackDecomposer.cs	(revision 1703)
@@ -18,5 +18,5 @@
 
 
-    public bool CanDecompose(Type type) {      
+    public bool CanDecompose(Type type) {
       return type == typeof(Stack) ||
         type.IsGenericType &&
@@ -43,9 +43,9 @@
     }
 
-    public void Populate(object instance, IEnumerable<Tag> tags, Type type) {            
+    public void Populate(object instance, IEnumerable<Tag> tags, Type type) {
       MethodInfo addMethod = type.GetMethod("Push");
       try {
         foreach (var tag in tags)
-          addMethod.Invoke(instance, new[] { tag.Value });        
+          addMethod.Invoke(instance, new[] { tag.Value });
       } catch (Exception e) {
         throw new PersistenceException("Exception caught while trying to populate enumerable.", e);
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/TypeDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/TypeDecomposer.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/TypeDecomposer.cs	(revision 1703)
@@ -1,4 +1,5 @@
 ﻿using System;
 using HeuristicLab.Persistence.Core;
+using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Interfaces;
 using System.Collections.Generic;
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlParser.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlParser.cs	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlParser.cs	(revision 1703)
@@ -62,5 +62,5 @@
       inner.Read();
       string xml = inner.ReadInnerXml();
-      inner.Close();      
+      inner.Close();
       yield return new PrimitiveToken(name, typeId, id, new XmlString(xml));
     }
Index: /trunk/sources/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj	(revision 1702)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj	(revision 1703)
@@ -101,7 +101,7 @@
     <Compile Include="Core\FormatBase.cs" />
     <Compile Include="Core\FormatterBase.cs" />
-    <Compile Include="Core\TypeExtensions.cs" />
+    <Compile Include="Auxiliary\TypeExtensions.cs" />
     <Compile Include="Core\TypeMapping.cs" />
-    <Compile Include="Core\TypeStringBuilder.cs" />
+    <Compile Include="Auxiliary\TypeStringBuilder.cs" />
     <Compile Include="Core\GeneratorBase.cs" />
     <Compile Include="Default\DebugString\DebugString.cs" />
