Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4919)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4920)
@@ -266,4 +266,5 @@
     }
 
+    /* remove end of 2012 */
     public File getOldPreferenceFile() {
         return new File(getPreferencesDirFile(), "preferences");
@@ -907,4 +908,5 @@
     }
 
+    /* remove this workaround end of 2012, replace by direct access to structure */
     synchronized private List<String> getCollectionInternal(String key) {
         List<String> prop = collectionProperties.get(key);
@@ -949,9 +951,9 @@
                 if (valueCopy.contains(null)) throw new RuntimeException("Error: Null as list element in preference setting (key '"+key+"')");
                 collectionProperties.put(key, Collections.unmodifiableList(valueCopy));
-                try {
-                    save();
-                } catch(IOException e){
-                    System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
-                }
+            }
+            try {
+                save();
+            } catch(IOException e){
+                System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
             }
         }
@@ -1027,4 +1029,5 @@
     }
 
+    /* remove this workaround end of 2012 and replace by direct array access */
     synchronized private List<List<String>> getArrayInternal(String key) {
         List<List<String>> prop = arrayProperties.get(key);
@@ -1078,9 +1081,9 @@
                 }
                 arrayProperties.put(key, Collections.unmodifiableList(valueCopy));
-                try {
-                    save();
-                } catch(IOException e){
-                    System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
-                }
+            }
+            try {
+                save();
+            } catch(IOException e){
+                System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
             }
         }
@@ -1123,4 +1126,5 @@
     }
 
+    /* remove this workaround end of 2012 and use direct access to proper variable */
     private synchronized List<Map<String, String>> getListOfStructsInternal(String key) {
         List<Map<String, String>> prop = listOfStructsProperties.get(key);
@@ -1177,9 +1181,9 @@
                 }
                 listOfStructsProperties.put(key, Collections.unmodifiableList(valueCopy));
-                try {
-                    save();
-                } catch(IOException e){
-                    System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
-                }
+            }
+            try {
+                save();
+            } catch(IOException e){
+                System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
             }
         }
@@ -1220,8 +1224,4 @@
     /**
      * Get a list of hashes which are represented by a struct-like class.
-     * It reads lines of the form
-     *  > key.0=prop:val \u001e prop:val \u001e ... \u001e prop:val
-     *  > ...
-     *  > key.N=prop:val \u001e prop:val \u001e ... \u001e prop:val
      * Possible properties are given by fields of the class klass that have
      * the @pref annotation.
@@ -1642,4 +1642,5 @@
             /* don't save default values */
             if(s == null || !s.equals(r)) {
+                /* TODO: remove old format exception end of 2012 */
                 if(r.contains("\u001e"))
                 {
