Index: trunk/sources/HeuristicLab.Data/3.3/ArrayDataBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ArrayDataBase.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ArrayDataBase.cs	(revision 1669)
@@ -25,4 +25,5 @@
 using System.Xml;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Data {
@@ -36,4 +37,5 @@
     /// <remarks>Uses property <see cref="ObjectData.Data"/> of base class <see cref="ObjectData"/>. 
     /// No own data storage present.</remarks>
+    [Storable]
     public new virtual Array Data {
       get { return (Array)base.Data; }
Index: trunk/sources/HeuristicLab.Data/3.3/BoolArrayData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/BoolArrayData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/BoolArrayData.cs	(revision 1669)
@@ -63,36 +63,4 @@
       return new BoolArrayDataView(this);
     }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The boolean elements of the array are saved as string in the node's inner text, each element separated by a semicolon.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. 
-    /// (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = ToString();
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted boolean array from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks> The elements of the boolean array must be saved in the node's inner 
-    /// text as a string, each element separated by a semicolon 
-    /// (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>
-    /// <param name="restoredObjects">A Dictionary of all already restored objects. 
-    /// (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      string[] tokens = node.InnerText.Split(';');
-      bool[] data = new bool[tokens.Length];
-      for (int i = 0; i < data.Length; i++)
-        data[i] = bool.Parse(tokens[i]);
-      Data = data;
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Data/3.3/BoolData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/BoolData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/BoolData.cs	(revision 1669)
@@ -74,29 +74,4 @@
       return clone;
     }
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The boolean value is saved as string in the inner text of the node.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
-    /// <param name="persistedObjects">The dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = ToString();
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted boolean value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks> The boolean value must be saved as string in the node's inner text 
-    /// (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the boolean value is saved.</param>
-    /// <param name="restoredObjects">The dictionary of all already restored objects. 
-    /// (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      Data = bool.Parse(node.InnerText);
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Data/3.3/BoolMatrixData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/BoolMatrixData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/BoolMatrixData.cs	(revision 1669)
@@ -66,46 +66,4 @@
 
     /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The dimensions of the matrix are saved as attributes (<c>Dimension1</c>,<c>Dimension2</c>).<br/>
-    /// The elements of the matrix are saved as string in the node's inner text, 
-    /// each element separated by a semicolon, all line by line.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">The dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      XmlAttribute dim1 = document.CreateAttribute("Dimension1");
-      dim1.Value = Data.GetLength(0).ToString(CultureInfo.InvariantCulture.NumberFormat);
-      node.Attributes.Append(dim1);
-      XmlAttribute dim2 = document.CreateAttribute("Dimension2");
-      dim2.Value = Data.GetLength(1).ToString(CultureInfo.InvariantCulture.NumberFormat);
-      node.Attributes.Append(dim2);
-      node.InnerText = ToString();
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted boolean matrix from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The dimensions of the matrix must be saved as Attributes (<c>Dimension1</c>, <c>Dimension2</c>). <br/>
-    /// The elements of the matrix must be saved in the node's inner text as string, 
-    /// each element separated by a semicolon, line by line (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>
-    /// <param name="restoredObjects">The dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      int dim1 = int.Parse(node.Attributes["Dimension1"].Value, CultureInfo.InvariantCulture.NumberFormat);
-      int dim2 = int.Parse(node.Attributes["Dimension2"].Value, CultureInfo.InvariantCulture.NumberFormat);
-      string[] tokens = node.InnerText.Split(';');
-      bool[,] data = new bool[dim1, dim2];
-      for (int i = 0; i < dim1; i++) {
-        for (int j = 0; j < dim2; j++) {
-          data[i, j] = bool.Parse(tokens[i * dim2 + j]);
-        }
-      }
-      Data = data;
-    }
-    /// <summary>
     /// The string representation of the matrix.
     /// </summary>
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleData.cs	(revision 1669)
@@ -45,5 +45,6 @@
     /// Initializes a new instance of <see cref="ConstrainedDoubleData"/> with default value <c>0.0</c>.
     /// </summary>
-    public ConstrainedDoubleData() : this (0.0) {
+    public ConstrainedDoubleData()
+      : this(0.0) {
     }
     /// <summary>
@@ -52,5 +53,6 @@
     /// </summary>
     /// <param name="data">The double value to represent.</param>
-    public ConstrainedDoubleData(double data) : base() {
+    public ConstrainedDoubleData(double data)
+      : base() {
       base.Data = new DoubleData(data);
     }
@@ -84,30 +86,4 @@
     }
 
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>Uses the <see cref="ConstrainedItemBase.GetXmlNode"/> implementation of base class 
-    /// <see cref="ConstrainedObjectData"/>. The double value is saved as a <see cref="DoubleData"/> 
-    /// in a child node having the tag name <c>Value</c>.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.AppendChild(PersistenceManager.Persist("Value", (DoubleData) base.Data, document, persistedObjects));
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted double value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The double value must be saved in the child node as a persisted <see cref="DoubleData"/>
-    /// having the tag name <c>Value</c> (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the double is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      base.Data = (DoubleData)PersistenceManager.Restore(node.SelectSingleNode("Value"), restoredObjects);
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntData.cs	(revision 1669)
@@ -45,5 +45,6 @@
     /// Initializes a new instance of <see cref="ConstrainedIntData"/> with default value <c>0</c>.
     /// </summary>
-    public ConstrainedIntData() : this (0) {
+    public ConstrainedIntData()
+      : this(0) {
     }
     /// <summary>
@@ -52,5 +53,6 @@
     /// </summary>
     /// <param name="data">The integer value to represent.</param>
-    public ConstrainedIntData(int data) : base() {
+    public ConstrainedIntData(int data)
+      : base() {
       base.Data = new IntData(data);
     }
@@ -83,31 +85,4 @@
       return clone;
     }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>Uses the <see cref="ConstrainedItemBase.GetXmlNode"/> implementation of base class 
-    /// <see cref="ConstrainedObjectData"/>. The int value is saved as a <see cref="IntData"/> 
-    /// in a child node having the tag name <c>Value</c>.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.AppendChild(PersistenceManager.Persist("Value", ((IntData)base.Data), document, persistedObjects));
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted int value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The int value must be saved in the child node as a persisted <see cref="IntData"/>
-    /// having the tag name <c>Value</c> (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the int is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      base.Data = (IntData)PersistenceManager.Restore(node.SelectSingleNode("Value"), restoredObjects);
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemList.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemList.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemList.cs	(revision 1669)
@@ -26,4 +26,5 @@
 using System.Xml;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Data {
@@ -33,5 +34,9 @@
   /// </summary>
   public class ConstrainedItemList : ConstrainedItemBase, IEnumerable, IEnumerable<IItem> {
+
+    [Storable]
     private List<IItem> list;
+
+    [Storable]
     private bool suspendConstraintCheck;
 
@@ -59,6 +64,4 @@
       return new ConstrainedItemListView(this);
     }
-
-    #region Clone & Persistence
     /// <summary>
     /// Clones the current instance.
@@ -81,49 +84,4 @@
 
     /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The basic instance is saved through the call of 
-    /// <see cref="HeuristicLab.Core.ConstrainedItemBase.GetXmlNode"/> of base class 
-    /// <see cref="ConstrainedItemBase"/>. <br/>
-    /// The list itself is saved as child node having the tag name <c>ListItems</c> 
-    /// and each element is saved as a child node of the <c>ListItems</c> node. 
-    /// The <c>suspendConstraintCheck</c> attribute is saved as an attribute of the list node 
-    /// having the tag name <c>SuspendConstraintCheck</c>.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      XmlNode listNode = document.CreateNode(XmlNodeType.Element, "ListItems", null);
-      for (int i = 0; i < list.Count; i++)
-        listNode.AppendChild(PersistenceManager.Persist(list[i], document, persistedObjects));
-      XmlAttribute sccAttrib = document.CreateAttribute("SuspendConstraintCheck");
-      sccAttrib.Value = suspendConstraintCheck.ToString();
-      listNode.Attributes.Append(sccAttrib);
-      node.AppendChild(listNode);
-      return node;
-    }
-
-    /// <summary>
-    /// Loads the persisted int value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The elements of the list must be saved as child nodes of 
-    /// the node with the tag name <c>ListItems</c>, which itself is a child node of the current instance.<br/>
-    /// The <c>suspendConstraintCheck</c> must be saved as attribute of the list node 
-    /// with the tag name <c>SuspendConstraintCheck</c> (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the int is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      XmlNode listNode = node.SelectSingleNode("ListItems");
-      list = new List<IItem>();
-      for (int i = 0; i < listNode.ChildNodes.Count; i++)
-        list.Add((IItem)PersistenceManager.Restore(listNode.ChildNodes[i], restoredObjects));
-      suspendConstraintCheck = bool.Parse(listNode.Attributes["SuspendConstraintCheck"].Value);
-    }
-    #endregion
-
-    /// <summary>
     /// The string representation of the current list instance.
     /// </summary>
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedObjectData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedObjectData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ConstrainedObjectData.cs	(revision 1669)
@@ -25,4 +25,5 @@
 using System.Xml;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Data {
@@ -31,4 +32,6 @@
   /// </summary>
   public class ConstrainedObjectData : ConstrainedItemBase, IObjectData {
+
+    [Storable]
     private object myData;
     /// <summary>
Index: trunk/sources/HeuristicLab.Data/3.3/DoubleArrayData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/DoubleArrayData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/DoubleArrayData.cs	(revision 1669)
@@ -64,40 +64,5 @@
       return new DoubleArrayDataView(this);
     }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The double elements of the array are saved in the node's inner text as string, 
-    /// each element, whose format depends on the locale culture info, separated by a semicolon.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"></see>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = ToString(CultureInfo.InvariantCulture.NumberFormat);
-      return node;
-    }
     
-    /// <summary>
-    /// Loads the persisted double array from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The double elemets of the array must be saved in the inner text of the node as string, 
-    /// each element separated by a semicolon and formatted according to the locale culture info and 
-    /// its number format (see <see cref="GetXmlNode"/>).</remarks>
-    /// <exception cref="System.FormatException">Thrown when a saved element cannot be parsed as a double value.</exception>
-    /// <param name="node">The <see cref="XmlNode"></see> where the instance is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      string[] tokens = node.InnerText.Split(';');
-      double[] data = new double[tokens.Length];
-      for(int i = 0; i < data.Length; i++)
-        if(double.TryParse(tokens[i], NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out data[i]) == false) {
-          throw new FormatException("Can't parse " + tokens[i] + " as double value.");
-        }
-      Data = data;
-    }
-
     /// <summary>
     /// The string representation of the array, formatted according to the given <paramref name="format"/>.
Index: trunk/sources/HeuristicLab.Data/3.3/DoubleData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/DoubleData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/DoubleData.cs	(revision 1669)
@@ -76,37 +76,4 @@
       return clone;
     }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The double value is saved in the node's inner text as string, 
-    /// its format depending on the local culture info and its number format.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = Data.ToString("r", CultureInfo.InvariantCulture.NumberFormat);
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted double value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The double value must be saved in the node's inner text as a string and 
-    /// formatted according to the locale culture info and 
-    /// its number format (see <see cref="GetXmlNode"/>).</remarks>
-    /// <exception cref="System.FormatException">Thrown when the saved value cannot be parsed as a double value.</exception>
-    /// <param name="node">The <see cref="XmlNode"/> where the double is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      double data;
-      if(double.TryParse(node.InnerText, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out data) == true) {
-        Data = data;
-      } else {
-        throw new FormatException("Can't parse " + node.InnerText + " as double value.");       
-      }
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Data/3.3/DoubleMatrixData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/DoubleMatrixData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/DoubleMatrixData.cs	(revision 1669)
@@ -66,54 +66,4 @@
 
     /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The dimensions of the matrix are saved as attributes (<c>Dimension1</c>,<c>Dimension2</c>), 
-    /// formatted according to the local culture info and its number format.<br/>
-    /// The elements of the matrix are saved as string in the node's inner text, 
-    /// each element separated by a semicolon, all line by line, formatted according to the 
-    /// local number format.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      XmlAttribute dim1 = document.CreateAttribute("Dimension1");
-      dim1.Value = Data.GetLength(0).ToString(CultureInfo.InvariantCulture.NumberFormat);
-      node.Attributes.Append(dim1);
-      XmlAttribute dim2 = document.CreateAttribute("Dimension2");
-      dim2.Value = Data.GetLength(1).ToString(CultureInfo.InvariantCulture.NumberFormat);
-      node.Attributes.Append(dim2);
-      node.InnerText = ToString(CultureInfo.InvariantCulture.NumberFormat);
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted matrix from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The dimensions of the matrix must be saved as Attributes (<c>Dimension1</c>, <c>Dimension2</c>),
-    /// formatted in the local number format. <br/>
-    /// The elements of the matrix must be saved in the node's inner text as string, 
-    /// each element separated by a semicolon, line by line, formatted according to the local 
-    /// culture info and its number format (see <see cref="GetXmlNode"/>).</remarks>
-    /// <exception cref="System.FormatException">Thrown when a saved element cannot be parsed as a double value.</exception>
-    /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>
-    /// <param name="restoredObjects">The dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      int dim1 = int.Parse(node.Attributes["Dimension1"].Value, CultureInfo.InvariantCulture.NumberFormat);
-      int dim2 = int.Parse(node.Attributes["Dimension2"].Value, CultureInfo.InvariantCulture.NumberFormat);
-      string[] tokens = node.InnerText.Split(';');
-      double[,] data = new double[dim1, dim2];
-      for (int i = 0; i < dim1; i++) {
-        for (int j = 0; j < dim2; j++) {
-          if(double.TryParse(tokens[i * dim2 + j], NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out data[i, j])==false) {
-            throw new FormatException("Can't parse " + tokens[i * dim2 + j] + " as double value.");
-          }
-        }
-      }
-      Data = data;
-    }
-
-    /// <summary>
     /// The string representation of the matrix.
     /// </summary>
Index: trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.2.csproj
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.2.csproj	(revision 1668)
+++ 	(revision )
@@ -1,331 +1,0 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Data</RootNamespace>
-    <AssemblyName>HeuristicLab.Data-3.2</AssemblyName>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <PublishUrl>http://localhost/HeuristicLab.Data/</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Web</InstallFrom>
-    <UpdateEnabled>true</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>
-    </DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\HeuristicLab.Data-3.2.XML</DocumentationFile>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <DocumentationFile>bin\Release\HeuristicLab.Data-3.2.XML</DocumentationFile>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <DocumentationFile>bin\Release\HeuristicLab.Data-3.2.XML</DocumentationFile>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="ArrayDataBaseView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ArrayDataBaseView.Designer.cs">
-      <DependentUpon>ArrayDataBaseView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="BoolArrayData.cs" />
-    <Compile Include="BoolArrayDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="BoolArrayDataView.Designer.cs">
-      <DependentUpon>BoolArrayDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="BoolData.cs" />
-    <Compile Include="BoolDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="BoolDataView.Designer.cs">
-      <DependentUpon>BoolDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="BoolMatrixData.cs" />
-    <Compile Include="ArrayDataBase.cs" />
-    <Compile Include="BoolMatrixDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="BoolMatrixDataView.Designer.cs">
-      <DependentUpon>BoolMatrixDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ConstrainedItemList.cs" />
-    <Compile Include="ConstrainedItemListView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedItemListView.Designer.cs">
-      <DependentUpon>ConstrainedItemListView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ConstrainedObjectData.cs" />
-    <Compile Include="ConstrainedIntData.cs" />
-    <Compile Include="ConstrainedIntDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedIntDataView.Designer.cs">
-      <DependentUpon>ConstrainedIntDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ConstrainedDoubleData.cs" />
-    <Compile Include="ConstrainedDoubleDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedDoubleDataView.Designer.cs">
-      <DependentUpon>ConstrainedDoubleDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="EditKeyValueDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="EditKeyValueDialog.designer.cs">
-      <DependentUpon>EditKeyValueDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ItemDictionaryView_T.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ItemDictionaryView_T.designer.cs">
-      <DependentUpon>ItemDictionaryView_T.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ItemDictionary_T.cs" />
-    <Compile Include="NullData.cs" />
-    <Compile Include="IntMatrixDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="IntMatrixDataView.Designer.cs">
-      <DependentUpon>IntMatrixDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DoubleMatrixDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DoubleMatrixDataView.Designer.cs">
-      <DependentUpon>DoubleMatrixDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="IntArrayDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="IntArrayDataView.Designer.cs">
-      <DependentUpon>IntArrayDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DoubleArrayDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DoubleArrayDataView.Designer.cs">
-      <DependentUpon>DoubleArrayDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DoubleDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DoubleDataView.Designer.cs">
-      <DependentUpon>DoubleDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="IntDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="IntDataView.Designer.cs">
-      <DependentUpon>IntDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="IObjectData.cs" />
-    <Compile Include="ItemList.cs" />
-    <Compile Include="ItemListView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ItemListView_T.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ItemListView_T.Designer.cs">
-      <DependentUpon>ItemListView_T.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ItemList_T.cs">
-    </Compile>
-    <Compile Include="MatrixDataBaseView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MatrixDataBaseView.Designer.cs">
-      <DependentUpon>MatrixDataBaseView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ObjectData.cs" />
-    <Compile Include="StringDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="StringDataView.Designer.cs">
-      <DependentUpon>StringDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DoubleArrayData.cs" />
-    <Compile Include="DoubleData.cs" />
-    <Compile Include="DoubleMatrixData.cs" />
-    <Compile Include="HeuristicLabDataPlugin.cs" />
-    <Compile Include="IntArrayData.cs" />
-    <Compile Include="IntData.cs" />
-    <Compile Include="IntMatrixData.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="StringData.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
-      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
-      <Name>HeuristicLab.Core-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="HeuristicLab.snk" />
-    <None Include="Properties\AssemblyInfo.frame" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="ArrayDataBaseView.resx">
-      <DependentUpon>ArrayDataBaseView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="BoolDataView.resx">
-      <DependentUpon>BoolDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedIntDataView.resx">
-      <DependentUpon>ConstrainedIntDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedDoubleDataView.resx">
-      <DependentUpon>ConstrainedDoubleDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedItemListView.resx">
-      <DependentUpon>ConstrainedItemListView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DoubleDataView.resx">
-      <DependentUpon>DoubleDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="EditKeyValueDialog.resx">
-      <DependentUpon>EditKeyValueDialog.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="IntDataView.resx">
-      <DependentUpon>IntDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ItemDictionaryView_T.resx">
-      <DependentUpon>ItemDictionaryView_T.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ItemListView_T.resx">
-      <DependentUpon>ItemListView_T.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MatrixDataBaseView.resx">
-      <DependentUpon>MatrixDataBaseView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="StringDataView.resx">
-      <DependentUpon>StringDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-</Project>
Index: trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 1669)
+++ trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 1669)
@@ -0,0 +1,339 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Data</RootNamespace>
+    <AssemblyName>HeuristicLab.Data-3.3</AssemblyName>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <PublishUrl>http://localhost/HeuristicLab.Data/</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Web</InstallFrom>
+    <UpdateEnabled>true</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>
+    </DocumentationFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.Data-3.3.xml</DocumentationFile>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\HeuristicLab.Data-3.2.XML</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\HeuristicLab.Data-3.2.XML</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ArrayDataBaseView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ArrayDataBaseView.Designer.cs">
+      <DependentUpon>ArrayDataBaseView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="BoolArrayData.cs" />
+    <Compile Include="BoolArrayDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="BoolArrayDataView.Designer.cs">
+      <DependentUpon>BoolArrayDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="BoolData.cs" />
+    <Compile Include="BoolDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="BoolDataView.Designer.cs">
+      <DependentUpon>BoolDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="BoolMatrixData.cs" />
+    <Compile Include="ArrayDataBase.cs" />
+    <Compile Include="BoolMatrixDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="BoolMatrixDataView.Designer.cs">
+      <DependentUpon>BoolMatrixDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ConstrainedItemList.cs" />
+    <Compile Include="ConstrainedItemListView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ConstrainedItemListView.Designer.cs">
+      <DependentUpon>ConstrainedItemListView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ConstrainedObjectData.cs" />
+    <Compile Include="ConstrainedIntData.cs" />
+    <Compile Include="ConstrainedIntDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ConstrainedIntDataView.Designer.cs">
+      <DependentUpon>ConstrainedIntDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ConstrainedDoubleData.cs" />
+    <Compile Include="ConstrainedDoubleDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ConstrainedDoubleDataView.Designer.cs">
+      <DependentUpon>ConstrainedDoubleDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="EditKeyValueDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="EditKeyValueDialog.designer.cs">
+      <DependentUpon>EditKeyValueDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ItemDictionaryView_T.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ItemDictionaryView_T.designer.cs">
+      <DependentUpon>ItemDictionaryView_T.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ItemDictionary_T.cs" />
+    <Compile Include="NullData.cs" />
+    <Compile Include="IntMatrixDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="IntMatrixDataView.Designer.cs">
+      <DependentUpon>IntMatrixDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DoubleMatrixDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DoubleMatrixDataView.Designer.cs">
+      <DependentUpon>DoubleMatrixDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="IntArrayDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="IntArrayDataView.Designer.cs">
+      <DependentUpon>IntArrayDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DoubleArrayDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DoubleArrayDataView.Designer.cs">
+      <DependentUpon>DoubleArrayDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DoubleDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DoubleDataView.Designer.cs">
+      <DependentUpon>DoubleDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="IntDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="IntDataView.Designer.cs">
+      <DependentUpon>IntDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="IObjectData.cs" />
+    <Compile Include="ItemList.cs" />
+    <Compile Include="ItemListView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ItemListView_T.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ItemListView_T.Designer.cs">
+      <DependentUpon>ItemListView_T.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ItemList_T.cs">
+    </Compile>
+    <Compile Include="MatrixDataBaseView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="MatrixDataBaseView.Designer.cs">
+      <DependentUpon>MatrixDataBaseView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ObjectData.cs" />
+    <Compile Include="StringDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="StringDataView.Designer.cs">
+      <DependentUpon>StringDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DoubleArrayData.cs" />
+    <Compile Include="DoubleData.cs" />
+    <Compile Include="DoubleMatrixData.cs" />
+    <Compile Include="HeuristicLabDataPlugin.cs" />
+    <Compile Include="IntArrayData.cs" />
+    <Compile Include="IntData.cs" />
+    <Compile Include="IntMatrixData.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="StringData.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="ArrayDataBaseView.resx">
+      <DependentUpon>ArrayDataBaseView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="BoolDataView.resx">
+      <DependentUpon>BoolDataView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ConstrainedIntDataView.resx">
+      <DependentUpon>ConstrainedIntDataView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ConstrainedDoubleDataView.resx">
+      <DependentUpon>ConstrainedDoubleDataView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ConstrainedItemListView.resx">
+      <DependentUpon>ConstrainedItemListView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DoubleDataView.resx">
+      <DependentUpon>DoubleDataView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="EditKeyValueDialog.resx">
+      <DependentUpon>EditKeyValueDialog.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="IntDataView.resx">
+      <DependentUpon>IntDataView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ItemDictionaryView_T.resx">
+      <DependentUpon>ItemDictionaryView_T.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ItemListView_T.resx">
+      <DependentUpon>ItemListView_T.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MatrixDataBaseView.resx">
+      <DependentUpon>MatrixDataBaseView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="StringDataView.resx">
+      <DependentUpon>StringDataView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: trunk/sources/HeuristicLab.Data/3.3/HeuristicLabDataPlugin.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/HeuristicLabDataPlugin.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/HeuristicLabDataPlugin.cs	(revision 1669)
@@ -29,7 +29,7 @@
   /// Plugin class for HeuristicLab.Data plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Data-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Data-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [ClassInfo(Name = "HeuristicLab.Data-3.3")]
+  [PluginFile(Filename = "HeuristicLab.Data-3.3.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core-3.3")]
   public class HeuristicLabDataPlugin : PluginBase {
   }
Index: trunk/sources/HeuristicLab.Data/3.3/IntArrayData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/IntArrayData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/IntArrayData.cs	(revision 1669)
@@ -66,37 +66,4 @@
 
     /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The int elements of the array are saved in the node's inner text as string, 
-    /// each element, whose format depends on the locale culture info, separated by a semicolon.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"></see>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = ToString(CultureInfo.InvariantCulture.NumberFormat);
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted int array from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The int elemets of the array must be saved in the inner text of the node as string, 
-    /// each element separated by a semicolon and formatted according to the locale culture info and 
-    /// its number format (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"></see> where the instance is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      if (!node.InnerText.Equals("")) {
-        string[] tokens = node.InnerText.Split(';');
-        int[] data = new int[tokens.Length];
-        for (int i = 0; i < data.Length; i++)
-          data[i] = int.Parse(tokens[i], CultureInfo.InvariantCulture.NumberFormat);
-        Data = data;
-      }
-    }
-
-    /// <summary>
     /// The string representation of the array, formatted according to the given <paramref name="format"/>.
     /// </summary>
Index: trunk/sources/HeuristicLab.Data/3.3/IntData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/IntData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/IntData.cs	(revision 1669)
@@ -76,31 +76,4 @@
       return clone;
     }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The int value is saved as string in the node's inner text, 
-    /// formatted according to the local culture info and its number format.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects.(Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = Data.ToString(CultureInfo.InvariantCulture.NumberFormat);
-      return node;
-    }
-    /// <summary>
-    ///  Loads the persisted int value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The int value must be saved in the node's inner text as a string and 
-    /// formatted according to the locale culture info and 
-    /// its number format (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the int is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      Data = int.Parse(node.InnerText, CultureInfo.InvariantCulture.NumberFormat);
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Data/3.3/IntMatrixData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/IntMatrixData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/IntMatrixData.cs	(revision 1669)
@@ -66,52 +66,4 @@
 
     /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The dimensions of the matrix are saved as attributes (<c>Dimension1</c>,<c>Dimension2</c>),
-    /// formatted according to the local culture info and its number format.<br/>
-    /// The elements of the matrix are saved as string in the node's inner text, 
-    /// each element separated by a semicolon, all line by line, formatted according to 
-    /// the local number format.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">The dictionary of all already persisted objects. 
-    /// (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      XmlAttribute dim1 = document.CreateAttribute("Dimension1");
-      dim1.Value = Data.GetLength(0).ToString(CultureInfo.InvariantCulture.NumberFormat);
-      node.Attributes.Append(dim1);
-      XmlAttribute dim2 = document.CreateAttribute("Dimension2");
-      dim2.Value = Data.GetLength(1).ToString(CultureInfo.InvariantCulture.NumberFormat);
-      node.Attributes.Append(dim2);
-      node.InnerText = ToString(CultureInfo.InvariantCulture.NumberFormat);
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted int matrix from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The dimensions of the matrix must be saved as Attributes 
-    /// (<c>Dimension1</c>, <c>Dimension2</c>), formatted in the local number format. <br/>
-    /// The elements of the matrix must be saved in the node's inner text as string, 
-    /// each element separated by a semicolon, line by line, formatted according to 
-    /// the local number format (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>
-    /// <param name="restoredObjects">The dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      int dim1 = int.Parse(node.Attributes["Dimension1"].Value, CultureInfo.InvariantCulture.NumberFormat);
-      int dim2 = int.Parse(node.Attributes["Dimension2"].Value, CultureInfo.InvariantCulture.NumberFormat);
-      string[] tokens = node.InnerText.Split(';');
-      int[,] data = new int[dim1, dim2];
-      for (int i = 0; i < dim1; i++) {
-        for (int j = 0; j < dim2; j++) {
-          data[i, j] = int.Parse(tokens[i * dim2 + j], CultureInfo.InvariantCulture.NumberFormat);
-        }
-      }
-      Data = data;
-    }
-
-    /// <summary>
     /// The string representation of the matrix.
     /// </summary> 
Index: trunk/sources/HeuristicLab.Data/3.3/ItemDictionary_T.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ItemDictionary_T.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ItemDictionary_T.cs	(revision 1669)
@@ -5,4 +5,5 @@
 using System.Xml;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Data {
@@ -14,5 +15,7 @@
   public class ItemDictionary<K,V> : ItemBase, IDictionary<K,V> 
     where K : IItem
-    where V : IItem{
+    where V : IItem {
+
+    [Storable]
     private Dictionary<K, V> dict;
 
@@ -57,45 +60,4 @@
       }
       return clone;
-    }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>Every key-value pair is saved as new child node with the tag name "KeyValuePair".<br/>
-    /// In the child node the key is saved as a new child node with the tag name "Key".<br/>
-    /// The value is also saved as new child node with the tag name "Val".
-    /// </remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      foreach (KeyValuePair<K, V> item in dict) {
-        XmlNode keyNode = PersistenceManager.Persist("Key", item.Key, document, persistedObjects);
-        XmlNode valueNode = PersistenceManager.Persist("Val", item.Value, document, persistedObjects); 
-        XmlNode pairNode = document.CreateNode(XmlNodeType.Element, "KeyValuePair", null); 
-        pairNode.AppendChild(keyNode); 
-        pairNode.AppendChild(valueNode); 
-        node.AppendChild(pairNode); 
-      }
-      return node; 
-    }
-
-    /// <summary>
-    /// Loads the persisted matrix from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>All key-value pairs must be saved as child nodes of the node. <br/>
-    /// Every child node has to contain two child nodes itself, one for the key, having the tag name "Key",
-    /// and one for the value, having the tag name "Val" (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>
-    /// <param name="restoredObjects">The dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      for (int i = 0; i < node.ChildNodes.Count; i++) {
-        K key = (K) PersistenceManager.Restore(node.ChildNodes[i].SelectSingleNode("Key"), restoredObjects);
-        V val = (V) PersistenceManager.Restore(node.ChildNodes[i].SelectSingleNode("Val"), restoredObjects);
-        dict[key] = val; 
-      }
     }
 
Index: trunk/sources/HeuristicLab.Data/3.3/ItemList_T.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ItemList_T.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ItemList_T.cs	(revision 1669)
@@ -26,4 +26,5 @@
 using System.Xml;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Data {
@@ -33,4 +34,6 @@
   /// <typeparam name="T">The type of the items in this list. <paramref name="T"/> must implement <see cref="IItem"/>.</typeparam>
   public class ItemList<T> : ItemBase, IList<T> where T : IItem {
+
+    [Storable]
     private List<T> list;
 
@@ -73,31 +76,4 @@
       for (int i = 0; i < list.Count; i++)
         destination.list.Add((T) Auxiliary.Clone(list[i], clonedObjects));
-    }
-
-    /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>Each element in the list is saved as child node.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>
-    /// <param name="persistedObjects">The dictionary of all already persisted objects. 
-    /// (Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      for (int i = 0; i < list.Count; i++)
-        node.AppendChild(PersistenceManager.Persist(list[i], document, persistedObjects));
-      return node;
-    }
-    /// <summary>
-    /// Loads the persisted item list from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The single elements of the list must be saved as child nodes (see <see cref="GetXmlNode"/>.</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>
-    /// <param name="restoredObjects">The dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      for (int i = 0; i < node.ChildNodes.Count; i++)
-        list.Add((T) PersistenceManager.Restore(node.ChildNodes[i], restoredObjects));
     }
 
Index: trunk/sources/HeuristicLab.Data/3.3/ObjectData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ObjectData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/ObjectData.cs	(revision 1669)
@@ -25,4 +25,5 @@
 using System.Xml;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Decomposers.Storable;
 
 namespace HeuristicLab.Data {
@@ -31,4 +32,6 @@
   /// </summary>
   public class ObjectData : ItemBase, IObjectData {
+
+    [Storable]
     private object myData;
     /// <summary>
Index: trunk/sources/HeuristicLab.Data/3.3/Properties/AssemblyInfo.frame
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/Properties/AssemblyInfo.frame	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/Properties/AssemblyInfo.frame	(revision 1669)
@@ -54,5 +54,5 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.2.0.$WCREV$")]
-[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
 [assembly: AssemblyBuildDate("$WCNOW$")]
Index: trunk/sources/HeuristicLab.Data/3.3/StringData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/StringData.cs	(revision 1668)
+++ trunk/sources/HeuristicLab.Data/3.3/StringData.cs	(revision 1669)
@@ -78,29 +78,4 @@
 
     /// <summary>
-    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
-    /// </summary>
-    /// <remarks>The string value is saved in the node's inner text.</remarks>
-    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
-    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
-    /// <param name="persistedObjects">A dictionary of all already persisted objects.(Needed to avoid cycles.)</param>
-    /// <returns>The saved <see cref="XmlNode"/>.</returns>
-    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
-      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
-      node.InnerText = Data;
-      return node;
-    }
-    /// <summary>
-    ///  Loads the persisted string value from the specified <paramref name="node"/>.
-    /// </summary>
-    /// <remarks>The string value must be saved in the node's inner text 
-    /// (see <see cref="GetXmlNode"/>).</remarks>
-    /// <param name="node">The <see cref="XmlNode"/> where the string is saved.</param>
-    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
-    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
-      base.Populate(node, restoredObjects);
-      Data = node.InnerText;
-    }
-
-    /// <summary>
     /// The string representation of the current instance.
     /// </summary>
Index: trunk/sources/HeuristicLab.sln
===================================================================
--- trunk/sources/HeuristicLab.sln	(revision 1668)
+++ trunk/sources/HeuristicLab.sln	(revision 1669)
@@ -168,4 +168,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Core-3.3", "HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj", "{C36BD924-A541-4A00-AFA8-41701378DDC5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Data-3.3", "HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj", "{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}"
 EndProject
 Global
@@ -2508,4 +2510,34 @@
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Visualization Debug|x86.ActiveCfg = Debug|x86
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Visualization Debug|x86.Build.0 = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.CEDMA Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.CEDMA Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.CEDMA Debug|x64.ActiveCfg = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.CEDMA Debug|x64.Build.0 = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.CEDMA Debug|x86.Build.0 = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|x64.ActiveCfg = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|x64.Build.0 = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|x86.ActiveCfg = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|x86.Build.0 = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.GP Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.GP Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.GP Debug|x64.ActiveCfg = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.GP Debug|x64.Build.0 = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.GP Debug|x86.ActiveCfg = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.GP Debug|x86.Build.0 = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x64.ActiveCfg = Release|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x64.Build.0 = Release|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x86.ActiveCfg = Release|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x86.Build.0 = Release|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Visualization Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Visualization Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Visualization Debug|x64.ActiveCfg = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Visualization Debug|x64.Build.0 = Debug|x64
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Visualization Debug|x86.ActiveCfg = Debug|x86
+		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Visualization Debug|x86.Build.0 = Debug|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: trunk/sources/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 1668)
+++ trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 1669)
@@ -27,4 +27,5 @@
 copy "%SolutionDir%\HeuristicLab.Constraints\3.2\%Outdir%\HeuristicLab.Constraints-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Data\3.2\%Outdir%\HeuristicLab.Data-3.2.dll" .\plugins
+copy "%SolutionDir%\HeuristicLab.Data\3.3\%Outdir%\HeuristicLab.Data-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.DataAccess\3.2\%Outdir%\HeuristicLab.DataAccess-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.DataAccess.ADOHelper\3.2\%Outdir%\HeuristicLab.DataAccess.ADOHelper-3.2.dll" .\plugins
