diff --git a/framework/src/main/java/org/apache/felix/framework/util/MapToDictionary.java b/framework/src/main/java/org/apache/felix/framework/util/MapToDictionary.java
index 0fe9aa1..79c648c 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/MapToDictionary.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/MapToDictionary.java
@@ -34,42 +34,30 @@
 
     public MapToDictionary(Map map)
     {
+        if (map == null)
+        {
+            throw new IllegalArgumentException("Source map cannot be null.");
+        }
         m_map = map;
     }
 
     public Enumeration elements()
     {
-        if (m_map == null)
-        {
-            return null;
-        }
         return new IteratorToEnumeration(m_map.values().iterator());
     }
 
     public Object get(Object key)
     {
-        if (m_map == null)
-        {
-            return null;
-        }
         return m_map.get(key);
     }
 
     public boolean isEmpty()
     {
-        if (m_map == null)
-        {
-            return true;
-        }
         return m_map.isEmpty();
     }
 
     public Enumeration keys()
     {
-        if (m_map == null)
-        {
-            return null;
-        }
         return new IteratorToEnumeration(m_map.keySet().iterator());
     }
 
@@ -85,10 +73,11 @@
 
     public int size()
     {
-        if (m_map == null)
-        {
-            return 0;
-        }
         return m_map.size();
     }
+
+    public String toString()
+    {
+        return m_map.toString();
+    }
 }
\ No newline at end of file
