Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4650)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4656)
@@ -1344,5 +1344,7 @@
             }
             public void visit(ListListSetting setting) {
-                changed = putArray(key, (Collection) setting.getValue());
+                @SuppressWarnings("unchecked")
+                boolean changed = putArray(key, (Collection) setting.getValue());
+                this.changed = changed;
             }
             public void visit(MapListSetting setting) {
@@ -1465,5 +1467,9 @@
                     properties.put(parser.getAttributeValue(null, "key"), parser.getAttributeValue(null, "value"));
                     jumpToEnd();
-                } else if (parser.getLocalName().equals("list") || parser.getLocalName().equals("collection")) {
+                } else if (parser.getLocalName().equals("list") ||
+                        parser.getLocalName().equals("collection") ||
+                        parser.getLocalName().equals("lists") ||
+                        parser.getLocalName().equals("maps")
+                ) {
                     parseToplevelList();
                 } else {
@@ -1489,4 +1495,6 @@
     protected void parseToplevelList() throws XMLStreamException {
         String key = parser.getAttributeValue(null, "key");
+        String name = parser.getLocalName();
+
         List<String> entries = null;
         List<List<String>> lists = null;
@@ -1520,10 +1528,16 @@
         if (entries != null) {
             collectionProperties.put(key, Collections.unmodifiableList(entries));
-        }
-        if (lists != null) {
+        } else if (lists != null) {
             arrayProperties.put(key, Collections.unmodifiableList(lists));
-        }
-        if (maps != null) {
+        } else if (maps != null) {
             listOfStructsProperties.put(key, Collections.unmodifiableList(maps));
+        } else {
+            if (name.equals("lists")) {
+                arrayProperties.put(key, Collections.<List<String>>emptyList());
+            } else if (name.equals("maps")) {
+                listOfStructsProperties.put(key, Collections.<Map<String, String>>emptyList());
+            } else {
+                collectionProperties.put(key, Collections.<String>emptyList());
+            }
         }
     }
@@ -1623,5 +1637,5 @@
 
         public void visit(ListListSetting setting) {
-            b.append("  <list key='").append(XmlWriter.encode(key)).append("'>\n");
+            b.append("  <lists key='").append(XmlWriter.encode(key)).append("'>\n");
             for (List<String> list : setting.getValue()) {
                 b.append("    <list>\n");
@@ -1631,9 +1645,9 @@
                 b.append("    </list>\n");
             }
-            b.append("  </list>\n");
+            b.append("  </lists>\n");
         }
 
         public void visit(MapListSetting setting) {
-            b.append("  <list key='").append(XmlWriter.encode(key)).append("'>\n");
+            b.append("  <maps key='").append(XmlWriter.encode(key)).append("'>\n");
             for (Map<String, String> struct : setting.getValue()) {
                 b.append("    <map>\n");
@@ -1643,5 +1657,5 @@
                 b.append("    </map>\n");
             }
-            b.append("  </list>\n");
+            b.append("  </maps>\n");
         }
     }
