Index: trunk/sources/HeuristicLab.Data/ConstrainedDoubleData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/ConstrainedDoubleData.cs	(revision 2)
+++ trunk/sources/HeuristicLab.Data/ConstrainedDoubleData.cs	(revision 737)
@@ -28,5 +28,13 @@
 
 namespace HeuristicLab.Data {
+  /// <summary>
+  /// Represents a double value having some constraints (e.g. smaller than 5.3).
+  /// </summary>
   public class ConstrainedDoubleData : ConstrainedObjectData {
+    /// <summary>
+    /// Gets or sets the double value of the current instance as <see cref="DoubleData"/>.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ConstrainedObjectData.Data"/> of base 
+    /// class <see cref="ConstrainedObjectData"/>. No own data storage present.</remarks>
     public new double Data {
       get { return ((DoubleData)base.Data).Data; }
@@ -34,21 +42,41 @@
     }
 
+    /// <summary>
+    /// Initializes a new instance of <see cref="ConstrainedDoubleData"/> with default value <c>0.0</c>.
+    /// </summary>
     public ConstrainedDoubleData() : this (0.0) {
     }
+    /// <summary>
+    /// Initializes a new instance of <see cref="ConstrainedDoubleData"/> with the specified 
+    /// double value <paramref name="data"/> as <see cref="DoubleData"/>.
+    /// </summary>
+    /// <param name="data">The double value to represent.</param>
     public ConstrainedDoubleData(double data) : base() {
       base.Data = new DoubleData(data);
     }
 
+    /// <inheritdoc cref="ConstrainedObjectData.TrySetData(object)"/>
     public virtual bool TrySetData(double data) {
       return base.TrySetData(new DoubleData(data));
     }
+    /// <inheritdoc cref="ConstrainedObjectData.TrySetData(object, out System.Collections.Generic.ICollection&lt;HeuristicLab.Core.IConstraint&gt;)"/>
     public virtual bool TrySetData(double data, out ICollection<IConstraint> violatedConstraints) {
       return base.TrySetData(new DoubleData(data), out violatedConstraints);
     }
 
+    /// <summary>
+    /// Creates a new instance of <see cref="ConstrainedDoubleDataView"/>.
+    /// </summary>
+    /// <returns>The created instance as <see cref="ConstrainedDoubleDataView"/>.</returns>
     public override IView CreateView() {
       return new ConstrainedDoubleDataView(this);
     }
 
+    /// <summary>
+    /// Clones the current instance.
+    /// </summary>
+    /// <remarks>Uses the <see cref="ConstrainedObjectData.Clone"/> implementation of base class <see cref="ConstrainedObjectData"/>.</remarks>
+    /// <param name="clonedObjects">A dictionary of all already cloned objects.</param>
+    /// <returns>The cloned instance as <see cref="ConstrainedDoubleData"/>.</returns>
     public override object Clone(IDictionary<Guid, object> clonedObjects) {
       ConstrainedDoubleData clone = (ConstrainedDoubleData)base.Clone(clonedObjects);
@@ -56,4 +84,14 @@
     }
 
+    /// <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);
@@ -61,4 +99,11 @@
       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);
@@ -66,4 +111,9 @@
     }
 
+    /// <summary>
+    /// The point of intersection where an <see cref="IObjectDataVisitor"/> 
+    /// can change the double value.
+    /// </summary>
+    /// <param name="visitor">The visitor that changes the element.</param>
     public override void Accept(IObjectDataVisitor visitor) {
       visitor.Visit(this);
