Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 3148)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 3149)
@@ -701,5 +701,5 @@
     public void setKeys(Map<String, String> keys) {
         Map<String, String> originalKeys = getKeys();
-        if (keys == null) {
+        if (keys == null || keys.isEmpty()) {
             this.keys = null;
             keysChangedImpl(originalKeys);
@@ -731,5 +731,5 @@
         else if (value == null) {
             remove(key);
-        } else if (keys == null || keys.length == 0){
+        } else if (keys == null){
             keys = new String[] {key, value};
             keysChangedImpl(originalKeys);
@@ -759,5 +759,5 @@
      */
     public final void remove(String key) {
-        if (key == null || keys == null || keys.length == 0 ) return;
+        if (key == null || keys == null) return;
         if (!hasKey(key))
             return;
@@ -803,5 +803,5 @@
         if (key == null)
             return null;
-        if (keys == null || keys.length == 0)
+        if (keys == null)
             return null;
         for (int i=0; i<keys.length;i+=2) {
@@ -812,5 +812,5 @@
 
     public final Collection<String> keySet() {
-        if (keys == null || keys.length == 0)
+        if (keys == null)
             return Collections.emptySet();
         Set<String> result = new HashSet<String>(keys.length / 2);
@@ -828,5 +828,5 @@
      */
     public final boolean hasKeys() {
-        return keys != null && keys.length != 0;
+        return keys != null;
     }
 
