Index: trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 8565)
+++ trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 8566)
@@ -469,5 +469,4 @@
     /**
      * The key/value list for this primitive.
-     *
      */
     protected String[] keys;
@@ -481,11 +480,16 @@
     @Override
     public Map<String, String> getKeys() {
-        Map<String, String> result = new HashMap<>();
-        String[] keys = this.keys;
-        if (keys != null) {
-            for (int i = 0; i < keys.length; i += 2) {
-                result.put(keys[i], keys[i + 1]);
-            }
-        }
+        final String[] keys = this.keys;
+        if (keys == null || keys.length == 0) {
+            return Collections.emptyMap();
+        } else if (keys.length == 2) {
+            return Collections.singletonMap(keys[0], keys[1]);
+        }
+
+        final Map<String, String> result = new HashMap<>();
+        for (int i = 0; i < keys.length; i += 2) {
+            result.put(keys[i], keys[i + 1]);
+        }
+
         return result;
     }
