diff --git a/Nuclex.Support (PC).csproj b/Nuclex.Support (PC).csproj
index cf5ffe8..af6d34b 100644
--- a/Nuclex.Support (PC).csproj	
+++ b/Nuclex.Support (PC).csproj	
@@ -191,6 +191,11 @@
       false
       PathHelper
     
+    
+      false
+      PathHelper.Test
+      PathHelper.cs
+    
     
       false
       AbortedException
diff --git a/Source/Collections/ParentingCollection.cs b/Source/Collections/ParentingCollection.cs
index 150a17f..b1afad6 100644
--- a/Source/Collections/ParentingCollection.cs
+++ b/Source/Collections/ParentingCollection.cs
@@ -81,14 +81,14 @@ namespace Nuclex.Support.Collections {
     /// 
     ///   
     ///     This method is intended to support collections that need to dispose their
-    ///     items. It will unparent all of the collections items and call Dispose()
+    ///     items. It will unparent all of the collection's items and call Dispose()
     ///     on any item that implements IDisposable.
     ///   
     ///   
-    ///     Do not call this method during a GC run (eg. from your destructor) as it
-    ///     will access the contained items in order to unparent and to Dispose() them,
-    ///     which leads to undefined behavior since the object might have already been
-    ///     collected by the GC.
+    ///     Do not call this method from your destructor as it will access the
+    ///     contained items in order to unparent and to Dispose() them, which leads
+    ///     to undefined behavior since the object might have already been collected
+    ///     by the GC. Call it only if your object is being manually disposed.
     ///   
     /// 
     protected void DisposeItems() {
diff --git a/Source/PathHelper.Test.cs b/Source/PathHelper.Test.cs
new file mode 100644
index 0000000..55fc69b
--- /dev/null
+++ b/Source/PathHelper.Test.cs
@@ -0,0 +1,137 @@
+#region CPL License
+/*
+Nuclex Framework
+Copyright (C) 2002-2007 Nuclex Development Labs
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the IBM Common Public License as
+published by the IBM Corporation; either version 1.0 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+IBM Common Public License for more details.
+
+You should have received a copy of the IBM Common Public
+License along with this library
+*/
+#endregion
+
+using System;
+using System.IO;
+
+#if UNITTEST
+
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+                                 
+namespace Nuclex.Support {
+
+  /// Unit Test for the path helper class
+  [TestFixture]
+  public class PathHelperTest {
+
+    /// 
+    ///   Tests whether the relative path creator keeps the absolute path if
+    ///   the location being passed is not relative to the base path.
+    /// 
+    [Test]
+    public void TestRelativePathOfNonRelativePath() {
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/Folder2"),
+          platformify("D:/Folder1/Folder2")
+        ),
+        Is.EqualTo(platformify("D:/Folder1/Folder2"))
+      );
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/Folder2/"),
+          platformify("D:/Folder1/Folder2/")
+        ),
+        Is.EqualTo(platformify("D:/Folder1/Folder2/"))
+      );
+
+    }
+
+    /// 
+    ///   Tests whether the relative path creator correctly builds the relative
+    ///   path to the parent folder of the base path.
+    /// 
+    [Test]
+    public void TestRelativePathToParentFolder() {
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/Folder2"),
+          platformify("C:/Folder1")
+        ),
+        Is.EqualTo(platformify(".."))
+      );
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/Folder2/"),
+          platformify("C:/Folder1/")
+        ),
+        Is.EqualTo(platformify("../"))
+      );
+    }
+
+    /// 
+    ///   Tests whether the relative path creator correctly builds the relative
+    ///   path to a nested folder in the base path.
+    /// 
+    [Test]
+    public void TestRelativePathToNestedFolder() {
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1"),
+          platformify("C:/Folder1/Folder2")
+        ),
+        Is.EqualTo(platformify("Folder2"))
+      );
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/"),
+          platformify("C:/Folder1/Folder2/")
+        ),
+        Is.EqualTo(platformify("Folder2/"))
+      );
+    }
+
+    /// 
+    ///   Tests whether the relative path creator correctly builds the relative
+    ///   path to another folder on the same level as base path.
+    /// 
+    [Test]
+    public void TestRelativePathToSiblingFolder() {
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/Folder2/"),
+          platformify("C:/Folder1/Folder2345")
+        ),
+        Is.EqualTo(platformify("../Folder2345"))
+      );
+      Assert.That(
+        PathHelper.MakeRelative(
+          platformify("C:/Folder1/Folder2345/"),
+          platformify("C:/Folder1/Folder2")
+        ),
+        Is.EqualTo(platformify("../Folder2"))
+      );
+    }
+
+    /// 
+    ///   Converts unix-style directory separators into the format used by the current platform
+    /// 
+    /// Path to converts into the platform-dependent format
+    /// Platform-specific version of the provided unix-style path
+    private string platformify(string path) {
+      return path.Replace('/', Path.DirectorySeparatorChar);
+    }
+
+  }
+
+} // namespace Nuclex.Support
+
+#endif // UNITTEST
diff --git a/Source/PathHelper.cs b/Source/PathHelper.cs
index 9c291e3..5b38e13 100644
--- a/Source/PathHelper.cs
+++ b/Source/PathHelper.cs
@@ -37,7 +37,7 @@ namespace Nuclex.Support {
         return absolutePath;
 
       // Calculate the required length for the StrinBuilder to be slightly more
-      // friendly in terms of memory usage
+      // friendly in terms of memory usage.
       int requiredLength = (baseDirectories.Length - (lastCommonRoot + 1)) * 3;
       for(int index = lastCommonRoot + 1; index < absoluteDirectories.Length; index++)
         requiredLength += absoluteDirectories[index].Length + 1;
@@ -47,7 +47,7 @@ namespace Nuclex.Support {
       // Go to the common path by adding .. until we're where we want to be
       for(int index = lastCommonRoot + 1; index < baseDirectories.Length; index++) {
         if(baseDirectories[index].Length > 0) {
-          if(relativePath.Length > 0) // // We don't want the path to start with a slash
+          if(relativePath.Length > 0) // We don't want the path to start with a slash
             relativePath.Append(Path.DirectorySeparatorChar);
 
           relativePath.Append("..");