Index: trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java	(revision 3844)
+++ trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java	(revision 3845)
@@ -177,4 +177,5 @@
         boolean res = false;
         try {
+            /* TODO: parse collection! */
             XmlObjectParser.Uniform<Prop> parser = new XmlObjectParser.Uniform<Prop>(in, "tag", Prop.class);
             for (Prop p : parser) {
@@ -200,9 +201,25 @@
                 continue; // do not upload password. It would get stored in plain!
             }
-            b.append("<tag key='");
-            b.append(XmlWriter.encode(p.getKey()));
-            b.append("' value='");
-            b.append(XmlWriter.encode(p.getValue()));
-            b.append("' />\n");
+            String r = p.getValue();
+            if(r.contains("\u001e"))
+            {
+                b.append("<collection key='");
+                b.append(XmlWriter.encode(p.getKey()));
+                b.append(">\n");
+                for (String val : r.split("\u001e", -1))
+                {
+                    b.append("  <entry value='");
+                    b.append(XmlWriter.encode(val));
+                    b.append("' />\n");
+                }
+            }
+            else
+            {
+                b.append("<tag key='");
+                b.append(XmlWriter.encode(p.getKey()));
+                b.append("' value='");
+                b.append(XmlWriter.encode(p.getValue()));
+                b.append("' />\n");
+            }
         }
         b.append("</preferences>");
