Index: trunk/sources/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj	(revision 3056)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj	(revision 3057)
@@ -30,4 +30,5 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
Index: trunk/sources/HeuristicLab.Persistence/3.3/Tests/StorableAttributeTests.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Tests/StorableAttributeTests.cs	(revision 3056)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Tests/StorableAttributeTests.cs	(revision 3057)
@@ -12,11 +12,10 @@
 
     [Storable(Name = "TestProperty", DefaultValue = 12)]
-    public object o;
+    public object o = null;
 
     [Storable]
     public int x = 2;
 
-    public int y;
-
+    public int y = 0;
   }
 
Index: trunk/sources/HeuristicLab.Persistence/3.3/Tests/UseCases.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Tests/UseCases.cs	(revision 3056)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Tests/UseCases.cs	(revision 3057)
@@ -41,4 +41,31 @@
     [Storable]
     private ulong _ulong = 123456;
+    public override bool Equals(object obj) {
+      NumberTest nt = obj as NumberTest;
+      if (nt == null)
+        throw new NotSupportedException();
+      return
+        nt._bool == _bool &&
+        nt._byte == _byte &&
+        nt._sbyte == _sbyte &&
+        nt._short == _short &&
+        nt._ushort == _ushort &&
+        nt._int == _int &&
+        nt._uint == _uint &&
+        nt._long == _long &&
+        nt._ulong == _ulong;
+    }
+    public override int GetHashCode() {
+      return
+        _bool.GetHashCode() ^
+        _byte.GetHashCode() ^
+        _sbyte.GetHashCode() ^
+        _short.GetHashCode() ^
+        _short.GetHashCode() ^
+        _int.GetHashCode() ^
+        _uint.GetHashCode() ^
+        _long.GetHashCode() ^
+        _ulong.GetHashCode();
+    }
   }
 
@@ -86,4 +113,21 @@
     [Storable]
     private object o = new object();
+    public override bool Equals(object obj) {
+      PrimitivesTest pt = obj as PrimitivesTest;
+      if (pt == null)
+        throw new NotSupportedException();
+      return base.Equals(obj) &&
+        c == pt.c &&
+        _long_array == pt._long_array &&
+        list == pt.list &&
+        o == pt.o;
+    }
+    public override int GetHashCode() {
+      return base.GetHashCode() ^
+        c.GetHashCode() ^
+        _long_array.GetHashCode() ^
+        list.GetHashCode() ^
+        o.GetHashCode();
+    }
   }
 
@@ -96,4 +140,15 @@
     [Storable]
     public TestEnum myEnum = TestEnum.va3;
+    public override bool Equals(object obj) {
+      RootBase rb = obj as RootBase;
+      if (rb == null)
+        throw new NotSupportedException();
+      return baseString == rb.baseString &&
+        myEnum == rb.myEnum;
+    }
+    public override int GetHashCode() {
+      return baseString.GetHashCode() ^
+        myEnum.GetHashCode();
+    }
   }
 
@@ -175,5 +230,14 @@
 
   public class NonSerializable {
-    int x;
+    int x = 0;
+    public override bool Equals(object obj) {
+      NonSerializable ns = obj as NonSerializable;
+      if (ns == null)
+        throw new NotSupportedException();
+      return ns.x == x;
+    }
+    public override int GetHashCode() {
+      return x.GetHashCode();
+    }
   }
 
@@ -377,4 +441,13 @@
       [Storable]
       private string value = "value";
+      public override bool Equals(object obj) {
+        NestedType nt = obj as NestedType;
+        if (nt == null)
+          throw new NotSupportedException();
+        return nt.value == value;
+      }
+      public override int GetHashCode() {
+        return value.GetHashCode();
+      }
     }
 
@@ -387,4 +460,5 @@
         DebugStringGenerator.Serialize(t),
         DebugStringGenerator.Serialize(o));
+      Assert.IsTrue(t.Equals(o));
     }
 
@@ -465,4 +539,5 @@
         DebugStringGenerator.Serialize(sdt),
         DebugStringGenerator.Serialize(o));
+      Assert.IsTrue(sdt.Equals(o));
     }
 
Index: trunk/sources/HeuristicLab.Tracing/3.2/Logger.cs
===================================================================
--- trunk/sources/HeuristicLab.Tracing/3.2/Logger.cs	(revision 3056)
+++ trunk/sources/HeuristicLab.Tracing/3.2/Logger.cs	(revision 3057)
@@ -29,8 +29,18 @@
 namespace HeuristicLab.Tracing {
 
+  /// <summary>
+  /// HeuristicLab Tracing entry point. Default logger. Reads configured tracing
+  /// file and provides automatic logging with reflection of the calling type.
+  /// </summary>
   public class Logger {
 
+    /// <summary>
+    /// true if Configure has been called already.
+    /// </summary>
     protected static bool IsConfigured = false;
 
+    /// <summary>
+    /// Configures this instance: Reads the log file specified in the settings.
+    /// </summary>
     protected static void Configure() {
       if (IsConfigured) return;
@@ -45,4 +55,10 @@
     }
 
+    /// <summary>
+    /// Gets the default logger for the calling class n levels up in the
+    /// call hierarchy.
+    /// </summary>
+    /// <param name="nParents">The number of parent calls.</param>
+    /// <returns>An <see cref="ILog"/> instance.</returns>
     public static ILog GetDefaultLogger(int nParents) {
       Configure();
@@ -51,4 +67,9 @@
     }
 
+    /// <summary>
+    /// Gets the default logger: The logger for the class of the
+    /// calling method.
+    /// </summary>
+    /// <returns>An <see cref="ILog"/> instance.</returns>
     public static ILog GetDefaultLogger() {
       Configure();
@@ -57,24 +78,49 @@
     }
 
+    /// <summary>
+    /// Issues a debug message to the default logger.
+    /// </summary>
+    /// <param name="message">The message.</param>
     public static void Debug(object message) {
       GetDefaultLogger(1).Debug(message);
     }
 
+    /// <summary>
+    /// Issues an informational message to the default logger.
+    /// </summary>
+    /// <param name="message">The message.</param>
     public static void Info(object message) {
       GetDefaultLogger(1).Info(message);
     }
 
+    /// <summary>
+    /// Issues a warning message to the default logger.
+    /// </summary>
+    /// <param name="message">The message.</param>
     public static void Warn(object message) {
       GetDefaultLogger(1).Warn(message);
     }
 
+    /// <summary>
+    /// Issues an error message to the default logger.
+    /// </summary>
+    /// <param name="message">The message.</param>
     public static void Error(object message) {
       GetDefaultLogger(1).Error(message);
     }
 
+    /// <summary>
+    /// Issues a fatal error message to the default logger.
+    /// </summary>
+    /// <param name="message">The message.</param>
     public static void Fatal(object message) {
       GetDefaultLogger(1).Fatal(message);
     }
 
+    /// <summary>
+    /// Issues a debug message to the logger of the specified type.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
     public static void Debug(Type type, object message) {
       Configure();
@@ -82,4 +128,10 @@
     }
 
+    /// <summary>
+    /// Issues an iformational message to the logger of the specified
+    /// type.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
     public static void Info(Type type, object message) {
       Configure();
@@ -87,4 +139,10 @@
     }
 
+    /// <summary>
+    /// Issues a warning message to the logger of
+    /// the specified type.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
     public static void Warn(Type type, object message) {
       Configure();
@@ -92,4 +150,10 @@
     }
 
+    /// <summary>
+    /// Issues an error message to the logger of the specified
+    /// type.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
     public static void Error(Type type, object message) {
       Configure();
@@ -97,4 +161,10 @@
     }
 
+    /// <summary>
+    /// Issues a fatal error message to the logger of
+    /// the specified type.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
     public static void Fatal(Type type, object message) {
       Configure();
@@ -102,24 +172,62 @@
     }
 
+    /// <summary>
+    /// Issues a debug message to the default
+    /// logger including an exception.
+    /// </summary>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Debug(object message, Exception exception) {
       GetDefaultLogger(1).Debug(message, exception);
     }
 
+    /// <summary>
+    /// Issues an informational message to the default
+    /// logger including an exception.
+    /// </summary>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
+
     public static void Info(object message, Exception exception) {
       GetDefaultLogger(1).Info(message, exception);
     }
 
+    /// <summary>
+    /// Issues a warning message to the default
+    /// logger including an exception.
+    /// </summary>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Warn(object message, Exception exception) {
       GetDefaultLogger(1).Warn(message, exception);
     }
 
+    /// <summary>
+    /// Issues an error message to the default
+    /// logger including an exception.
+    /// </summary>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Error(object message, Exception exception) {
       GetDefaultLogger(1).Error(message, exception);
     }
 
+    /// <summary>
+    /// Issues a fatal error message to the default
+    /// logger including an exception.
+    /// </summary>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Fatal(object message, Exception exception) {
       GetDefaultLogger(1).Fatal(message, exception);
     }
 
+    /// <summary>
+    /// Issues a debug message to the logger of the specified
+    /// type including an exception.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Debug(Type type, object message, Exception exception) {
       Configure();
@@ -127,4 +235,11 @@
     }
 
+    /// <summary>
+    /// Issues an informational message to the logger of the specified
+    /// type including an exception.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Info(Type type, object message, Exception exception) {
       Configure();
@@ -132,4 +247,11 @@
     }
 
+    /// <summary>
+    /// Issues a warning message to the logger of the specified
+    /// type including an exception.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Warn(Type type, object message, Exception exception) {
       Configure();
@@ -137,4 +259,11 @@
     }
 
+    /// <summary>
+    /// Issues an error message to the logger of the specified
+    /// type including an exception.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Error(Type type, object message, Exception exception) {
       Configure();
@@ -142,9 +271,15 @@
     }
 
+    /// <summary>
+    /// Issues a fatal error message to the logger of the specified
+    /// type including an exception.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <param name="message">The message.</param>
+    /// <param name="exception">The exception.</param>
     public static void Fatal(Type type, object message, Exception exception) {
       Configure();
       LogManager.GetLogger(type).Fatal(message, exception);
     }
-
   }
 }
