diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/Counters.java b/common/source/java/ch/systemsx/cisd/common/utilities/Counters.java
index 521aaf3f719c60fd7ac8cb62ae1087bf85bfa598..3a7602e4527e040d25a4df88b92738eb10685da2 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/Counters.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/Counters.java
@@ -60,4 +60,12 @@ public class Counters<T>
         }
         return counter.increment();
     }
+    
+    /**
+     * Returns the number of different object for which {@link #count(Object)} has been invoked.
+     */
+    public int getNumberOfDifferentObjectsCounted()
+    {
+        return counters.size();
+    }
 }
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/CountersTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/CountersTest.java
index 4a3effc7ff1b09f626e38aaf03229c89caf93189..45a3026543b10eafb8cd7d0cdcc085403141dd9e 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/CountersTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/CountersTest.java
@@ -31,8 +31,10 @@ public class CountersTest extends AssertJUnit
     {
         Counters<String> counters = new Counters<String>();
         
+        assertEquals(0, counters.getNumberOfDifferentObjectsCounted());
         assertEquals(0, counters.getCountOf("a"));
         assertEquals(1, counters.count("a"));
+        assertEquals(1, counters.getNumberOfDifferentObjectsCounted());
         assertEquals(1, counters.getCountOf("a"));
         assertEquals(1, counters.count("b"));
         assertEquals(1, counters.getCountOf("a"));
@@ -41,5 +43,6 @@ public class CountersTest extends AssertJUnit
         assertEquals(3, counters.count("a"));
         assertEquals(3, counters.getCountOf("a"));
         assertEquals(1, counters.getCountOf("b"));
+        assertEquals(2, counters.getNumberOfDifferentObjectsCounted());
     }
 }