Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs	(revision 3017)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs	(revision 3036)
@@ -12,6 +12,14 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
+  /// <summary>
+  /// Serializes a primitive number type using the ToString() method and an
+  /// approriate precision and parses back the generated string using
+  /// the number type's Parse() method.
+  /// 
+  /// This serializer has Priorty below zero and is disabled by default
+  /// but can be useful in generating custom serializers.
+  /// </summary>
   [StorableClass]
-  public class Number2StringSerializer : ICompositeSerializer {
+  public sealed class Number2StringSerializer : ICompositeSerializer {
 
     private static readonly List<Type> numberTypes =
@@ -42,8 +50,23 @@
     }
 
+    /// <summary>
+    /// Determines for every type whether the composite serializer is applicable.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can serialize the specified type; otherwise, <c>false</c>.
+    /// </returns>
     public bool CanSerialize(Type type) {
       return numberParsers.ContainsKey(type);
     }
 
+    /// <summary>
+    /// Give a reason if possibly why the given type cannot be serialized by this
+    /// ICompositeSerializer.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <returns>
+    /// A string justifying why type cannot be serialized.
+    /// </returns>
     public string JustifyRejection(Type type) {
       return string.Format("not a number type (one of {0})",
@@ -51,4 +74,9 @@
     }
 
+    /// <summary>
+    /// Formats the specified obj.
+    /// </summary>
+    /// <param name="obj">The obj.</param>
+    /// <returns></returns>
     public string Format(object obj) {
       if (obj.GetType() == typeof(float))
@@ -61,4 +89,10 @@
     }
 
+    /// <summary>
+    /// Parses the specified string value.
+    /// </summary>
+    /// <param name="stringValue">The string value.</param>
+    /// <param name="type">The type.</param>
+    /// <returns></returns>
     public object Parse(string stringValue, Type type) {
       try {
@@ -75,12 +109,35 @@
 
 
+
+    /// <summary>
+    /// Defines the Priorty of this composite serializer. Higher number means
+    /// higher prioriy. Negative numbers are fallback serializers that are
+    /// disabled by default.
+    /// All default generic composite serializers have priority 100. Specializations
+    /// have priority 200 so they will  be tried first. Priorities are
+    /// only considered for default configurations.
+    /// </summary>
+    /// <value></value>
     public int Priority {
       get { return -100; }
     }
 
+    /// <summary>
+    /// Generate MetaInfo necessary for instance creation. (e.g. dimensions
+    /// necessary for array creation.
+    /// </summary>
+    /// <param name="obj">An object.</param>
+    /// <returns>An enumerable of <see cref="Tag"/>s.</returns>
     public IEnumerable<Tag> CreateMetaInfo(object obj) {
       yield return new Tag(Format(obj));
     }
 
+    /// <summary>
+    /// Decompose an object into <see cref="Tag"/>s, the tag name can be null,
+    /// the order in which elements are generated is guaranteed to be
+    /// the same as they will be supplied to the Populate method.
+    /// </summary>
+    /// <param name="obj">An object.</param>
+    /// <returns>An enumerable of <see cref="Tag"/>s.</returns>
     public IEnumerable<Tag> Decompose(object obj) {
       // numbers are composed just of meta info
@@ -88,4 +145,10 @@
     }
 
+    /// <summary>
+    /// Create an instance of the object using the provided meta information.
+    /// </summary>
+    /// <param name="type">A type.</param>
+    /// <param name="metaInfo">The meta information.</param>
+    /// <returns>A fresh instance of the provided type.</returns>
     public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
       var it = metaInfo.GetEnumerator();
@@ -102,4 +165,12 @@
     }
 
+    /// <summary>
+    /// Fills an object with values from the previously generated <see cref="Tag"/>s
+    /// in Decompose. The order in which the values are supplied is
+    /// the same as they where generated. <see cref="Tag"/> names might be null.
+    /// </summary>
+    /// <param name="instance">An empty object instance.</param>
+    /// <param name="tags">The tags.</param>
+    /// <param name="type">The type.</param>
     public void Populate(object instance, IEnumerable<Tag> tags, Type type) {
       // numbers are composed just of meta info, no need to populate
