Index: trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 8846)
@@ -136,5 +136,5 @@
             ImageryInfo ret = new ImageryInfo(info.getName(), url, "wms", info.getEulaAcceptanceRequired(), info.getCookies());
             if (layersString.length() > 2) {
-                ret.setName(ret.getName() + " " + layersString.substring(0, layersString.length() - 2));
+                ret.setName(ret.getName() + ' ' + layersString.substring(0, layersString.length() - 2));
             }
             ret.setServerProjections(supportedCrs);
Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 8846)
@@ -188,5 +188,5 @@
             }
         }
-        putValue("active", true);
+        putValue("active", Boolean.TRUE);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 8846)
@@ -497,6 +497,6 @@
             if (predecessors.get(n) == null) return true;
             if (predecessors.get(n).size() == 1) {
-                NodePair p1 = successors.get(n).iterator().next();
-                NodePair p2 = predecessors.get(n).iterator().next();
+                NodePair p1 = successors.get(n).get(0);
+                NodePair p2 = predecessors.get(n).get(0);
                 return p1.equals(p2.swap());
             }
Index: trunk/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java	(revision 8846)
@@ -30,5 +30,5 @@
         if (infoObject instanceof OsmPrimitive) {
             OsmPrimitive primitive = (OsmPrimitive) infoObject;
-            return Main.getBaseBrowseUrl() + "/" + OsmPrimitiveType.from(primitive).getAPIName() + "/" + primitive.getId() + "/history";
+            return Main.getBaseBrowseUrl() + '/' + OsmPrimitiveType.from(primitive).getAPIName() + '/' + primitive.getId() + "/history";
         } else {
             return null;
Index: trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 8846)
@@ -262,5 +262,5 @@
             try (Formatter us = new Formatter(Locale.US)) {
                 tOffset.setText(us.format(
-                    "%1." + precision + "f; %1." + precision + "f",
+                    "%1." + precision + "f; %1." + precision + 'f',
                     layer.getDx(), layer.getDy()).toString());
             }
Index: trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java	(revision 8846)
@@ -36,5 +36,5 @@
         if (infoObject instanceof OsmPrimitive) {
             OsmPrimitive primitive = (OsmPrimitive) infoObject;
-            return Main.getBaseBrowseUrl() + "/" + OsmPrimitiveType.from(primitive).getAPIName() + "/" + primitive.getId();
+            return Main.getBaseBrowseUrl() + '/' + OsmPrimitiveType.from(primitive).getAPIName() + '/' + primitive.getId();
         } else if (infoObject instanceof Note) {
             Note note = (Note) infoObject;
Index: trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 8846)
@@ -188,5 +188,5 @@
                 if (s.wmsUrl.isEmpty()) {
                     try {
-                        addWMSLayer(s.name + " (" + text + ")", text);
+                        addWMSLayer(s.name + " (" + text + ')', text);
                         break outer;
                     } catch (IllegalStateException ex) {
@@ -200,5 +200,5 @@
                     String id = m.group(1);
                     String newURL = s.wmsUrl.replaceAll("__s__", id);
-                    String title = s.name + " (" + id + ")";
+                    String title = s.name + " (" + id + ')';
                     addWMSLayer(title, newURL);
                     break outer;
@@ -207,5 +207,5 @@
                 if (s.idValidator.matcher(text).matches()) {
                     String newURL = s.wmsUrl.replaceAll("__s__", text);
-                    String title = s.name + " (" + text + ")";
+                    String title = s.name + " (" + text + ')';
                     addWMSLayer(title, newURL);
                     break outer;
Index: trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 8846)
@@ -305,5 +305,5 @@
             Main.main.undoRedo.add(
                     new SequenceCommand(
-                            title1 + " " + title2,
+                            title1 + ' ' + title2,
                             commands
                     ));
Index: trunk/src/org/openstreetmap/josm/actions/RestartAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 8846)
@@ -158,5 +158,5 @@
                 // else it's a .class, add the classpath and mainClass
                 cmd.add("-cp");
-                cmd.add("\"" + System.getProperty("java.class.path") + "\"");
+                cmd.add('"' + System.getProperty("java.class.path") + '"');
                 cmd.add(mainCommand[0]);
             }
Index: trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 8846)
@@ -172,7 +172,7 @@
             String fn = file.getPath();
             if (ff instanceof ExtensionFileFilter) {
-                fn += "." + ((ExtensionFileFilter) ff).getDefaultExtension();
+                fn += '.' + ((ExtensionFileFilter) ff).getDefaultExtension();
             } else if (extension != null) {
-                fn += "." + extension;
+                fn += '.' + extension;
             }
             file = new File(fn);
Index: trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 8846)
@@ -115,5 +115,5 @@
                     if (canceled) return;
                     if (!layers.isEmpty()) {
-                        Layer firstLayer = layers.iterator().next();
+                        Layer firstLayer = layers.get(0);
                         boolean noMap = Main.map == null;
                         if (noMap) {
Index: trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 8846)
@@ -60,5 +60,5 @@
     private static void shortenParam(ListIterator<String> it, String[] param, String source, String target) {
         if (source != null && target.length() < source.length() && param[1].startsWith(source)) {
-            it.set(param[0] + "=" + param[1].replace(source, target));
+            it.set(param[0] + '=' + param[1].replace(source, target));
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 8846)
@@ -455,7 +455,7 @@
                                 Way w = relationMembers.get(i_r - k).getWay();
                                 if ((w.lastNode() == way.firstNode()) || w.firstNode() == way.firstNode()) {
-                                    backwards = false;
+                                    backwards = Boolean.FALSE;
                                 } else if ((w.firstNode() == way.lastNode()) || w.lastNode() == way.lastNode()) {
-                                    backwards = true;
+                                    backwards = Boolean.TRUE;
                                 }
                                 break;
@@ -464,7 +464,7 @@
                                 Way w = relationMembers.get(i_r + k).getWay();
                                 if ((w.lastNode() == way.firstNode()) || w.firstNode() == way.firstNode()) {
-                                    backwards = true;
+                                    backwards = Boolean.TRUE;
                                 } else if ((w.firstNode() == way.lastNode()) || w.lastNode() == way.lastNode()) {
-                                    backwards = false;
+                                    backwards = Boolean.FALSE;
                                 }
                                 break;
Index: trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 8846)
@@ -135,13 +135,13 @@
             errorTime = Notification.TIME_VERY_LONG;
             errMsg =
-                tr("The current selection cannot be used for unglueing.")+"\n"+
-                "\n"+
-                tr("Select either:")+"\n"+
-                tr("* One tagged node, or")+"\n"+
-                tr("* One node that is used by more than one way, or")+"\n"+
-                tr("* One node that is used by more than one way and one of those ways, or")+"\n"+
-                tr("* One way that has one or more nodes that are used by more than one way, or")+"\n"+
-                tr("* One way and one or more of its nodes that are used by more than one way.")+"\n"+
-                "\n"+
+                tr("The current selection cannot be used for unglueing.")+'\n'+
+                '\n'+
+                tr("Select either:")+'\n'+
+                tr("* One tagged node, or")+'\n'+
+                tr("* One node that is used by more than one way, or")+'\n'+
+                tr("* One node that is used by more than one way and one of those ways, or")+'\n'+
+                tr("* One way that has one or more nodes that are used by more than one way, or")+'\n'+
+                tr("* One way and one or more of its nodes that are used by more than one way.")+'\n'+
+                '\n'+
                 tr("Note: If a way is selected, this way will get fresh copies of the unglued\n"+
                         "nodes and the new nodes will be selected. Otherwise, all ways will get their\n"+
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 8846)
@@ -363,5 +363,5 @@
                 // TODO: proper i18n after stabilization
                 Collection<String> items = new ArrayList<>();
-                items.add(tr("OSM Server URL:") + " " + url.getHost());
+                items.add(tr("OSM Server URL:") + ' ' + url.getHost());
                 items.add(tr("Command")+": "+url.getPath());
                 if (url.getQuery() != null) {
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 8846)
@@ -167,5 +167,5 @@
         @Override
         public String toString() {
-            return "ReferenceSegment[en=" + en + ", p1=" + p1 + ", p2=" + p2 + ", perp=" + perpendicular + "]";
+            return "ReferenceSegment[en=" + en + ", p1=" + p1 + ", p2=" + p2 + ", perp=" + perpendicular + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 8846)
@@ -960,5 +960,5 @@
             else if (mode == Mode.MOVE && (System.currentTimeMillis() - mouseDownTime >= initialMoveDelay)) {
                 final boolean canMerge = getCurrentDataSet() != null && !getCurrentDataSet().getSelectedNodes().isEmpty();
-                final String mergeHelp = canMerge ? " " + tr("Ctrl to merge with nearest node.") : "";
+                final String mergeHelp = canMerge ? ' ' + tr("Ctrl to merge with nearest node.") : "";
                 return tr("Release the mouse button to stop moving.") + mergeHelp;
             } else if (mode == Mode.ROTATE)
Index: trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java	(revision 8846)
@@ -34,5 +34,5 @@
         @Override
         public String toString() {
-            return "Range [start=" + start + ", end=" + end + "]";
+            return "Range [start=" + start + ", end=" + end + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 8846)
@@ -207,5 +207,5 @@
                         try {
                             JTextComponent tf = (JTextComponent) hcb.getEditor().getEditorComponent();
-                            tf.getDocument().insertString(tf.getCaretPosition(), " " + insertText, null);
+                            tf.getDocument().insertString(tf.getCaretPosition(), ' ' + insertText, null);
                         } catch (BadLocationException ex) {
                             throw new RuntimeException(ex.getMessage(), ex);
@@ -628,5 +628,5 @@
             String all = allElements ? ", " +
                             /*all elements*/ trc("search", "A") : "";
-            return "\"" + text + "\" (" + cs + rx + css + all + ", " + mode + ")";
+            return '"' + text + "\" (" + cs + rx + css + all + ", " + mode + ')';
         }
 
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 8846)
@@ -159,5 +159,5 @@
                     case "timestamp":
                         // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
-                        String rangeS = " " + tokenizer.readTextOrNumber() + " ";
+                        String rangeS = ' ' + tokenizer.readTextOrNumber() + ' ';
                         String[] rangeA = rangeS.split("/");
                         if (rangeA.length == 1) {
@@ -371,5 +371,5 @@
         @Override
         public String toString() {
-            return key + "?";
+            return key + '?';
         }
     }
@@ -607,5 +607,5 @@
         @Override
         public String toString() {
-            return key + "=" + value;
+            return key + '=' + value;
         }
     }
@@ -623,5 +623,5 @@
             Double v = null;
             try {
-                v = Double.parseDouble(referenceValue);
+                v = Double.valueOf(referenceValue);
             } catch (NumberFormatException ignore) {
             }
@@ -1019,5 +1019,5 @@
         @Override
         public String toString() {
-            return getString() + "=" + min + "-" + max;
+            return getString() + '=' + min + '-' + max;
         }
     }
@@ -1244,5 +1244,5 @@
         @Override
         public String toString() {
-            return "parent(" + match + ")";
+            return "parent(" + match + ')';
         }
     }
@@ -1268,5 +1268,5 @@
         @Override
         public String toString() {
-            return "child(" + match + ")";
+            return "child(" + match + ')';
         }
     }
Index: trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 8846)
@@ -141,5 +141,5 @@
         String text;
         if (objects.size() == 1 && tags.size() == 1) {
-            OsmPrimitive primitive = objects.iterator().next();
+            OsmPrimitive primitive = objects.get(0);
             String msg = "";
             Map.Entry<String, String> entry = tags.entrySet().iterator().next();
Index: trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java	(revision 8846)
@@ -85,8 +85,8 @@
         if (objects.size() == 1) {
             NameVisitor v = new NameVisitor();
-            objects.iterator().next().accept(v);
-            text += " "+tr(v.className)+" "+v.name;
+            objects.get(0).accept(v);
+            text += ' '+tr(v.className)+' '+v.name;
         } else {
-            text += " "+objects.size()+" "+trn("object", "objects", objects.size());
+            text += ' '+objects.size()+' '+trn("object", "objects", objects.size());
         }
         return text;
Index: trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 8846)
@@ -69,5 +69,5 @@
             this.a = a;
             this.b = b;
-            this.pattern = getPatternFor(a + "|" + b);
+            this.pattern = getPatternFor(a + '|' + b);
         }
 
Index: trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 8846)
@@ -84,5 +84,5 @@
 
                 final JLabel primitiveLabel = new JLabel(
-                        primitive.getDisplayName(DefaultNameFormatter.getInstance()) + ":",
+                        primitive.getDisplayName(DefaultNameFormatter.getInstance()) + ':',
                         ImageProvider.get(primitive.getDisplayType()),
                         JLabel.LEFT
Index: trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 8846)
@@ -156,5 +156,5 @@
         while (true) {
             String filename = String.format("%1$s_%2$tY%2$tm%2$td_%2$tH%2$tM%2$tS%2$tL%3$s",
-                    layer.layerFileName, now, index == 0 ? "" : "_" + index);
+                    layer.layerFileName, now, index == 0 ? "" : '_' + index);
             File result = new File(autosaveDir, filename+".osm");
             try {
Index: trunk/src/org/openstreetmap/josm/data/Bounds.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 8846)
@@ -262,13 +262,13 @@
     }
 
-    @Override public String toString() {
-        return "Bounds["+minLat+","+minLon+","+maxLat+","+maxLon+"]";
+    @Override
+    public String toString() {
+        return "Bounds["+minLat+','+minLon+','+maxLat+','+maxLon+']';
     }
 
     public String toShortString(DecimalFormat format) {
-        return
-        format.format(minLat) + " "
+        return format.format(minLat) + ' '
         + format.format(minLon) + " / "
-        + format.format(maxLat) + " "
+        + format.format(maxLat) + ' '
         + format.format(maxLon);
     }
Index: trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 8846)
@@ -466,5 +466,5 @@
 
                 engine.eval("homeDir='"+normalizeDirName(Main.pref.getPreferencesDirectory().getAbsolutePath()) +"';");
-                engine.eval("josmVersion="+Version.getInstance().getVersion()+";");
+                engine.eval("josmVersion="+Version.getInstance().getVersion()+';');
                 String className = CustomConfigurator.class.getName();
                 engine.eval("API.messageBox="+className+".messageBox");
@@ -740,5 +740,5 @@
 
         private String normalizeDirName(String dir) {
-            String s = dir.replace("\\", "/");
+            String s = dir.replace('\\', '/');
             if (s.endsWith("/")) s = s.substring(0, s.length()-1);
             return s;
Index: trunk/src/org/openstreetmap/josm/data/DataSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/DataSource.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/DataSource.java	(revision 8846)
@@ -71,5 +71,5 @@
     @Override
     public String toString() {
-        return "DataSource [bounds=" + bounds + ", origin=" + origin + "]";
+        return "DataSource [bounds=" + bounds + ", origin=" + origin + ']';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 8846)
@@ -96,4 +96,12 @@
  */
 public class Preferences {
+
+    private static final String[] OBSOLETE_PREF_KEYS = {
+            "remote.control.host", // replaced by individual values for IPv4 and IPv6. To remove end of 2015
+            "osm.notes.enableDownload", // was used prior to r8071 when notes was an hidden feature. To remove end of 2015
+            "mappaint.style.migration.switchedToMapCSS", // was used prior to 8315 for MapCSS switch. To remove end of 2015
+            "mappaint.style.migration.changedXmlName" // was used prior to 8315 for MapCSS switch. To remove end of 2015
+    };
+
     /**
      * Internal storage for the preference directory.
@@ -789,5 +797,5 @@
     public synchronized boolean getBoolean(final String key, final String specName, final boolean def) {
         boolean generic = getBoolean(key, def);
-        String skey = key+"."+specName;
+        String skey = key+'.'+specName;
         Setting<?> prop = settingsMap.get(skey);
         if (prop instanceof StringSetting)
@@ -1077,5 +1085,5 @@
 
     public synchronized int getInteger(String key, String specName, int def) {
-        String v = get(key+"."+specName);
+        String v = get(key+'.'+specName);
         if (v.isEmpty())
             v = get(key, Integer.toString(def));
@@ -1394,5 +1402,5 @@
                 if (fieldValue != null) {
                     if (f.getAnnotation(writeExplicitly.class) != null || !Objects.equals(fieldValue, defaultFieldValue)) {
-                        String key = f.getName().replace("_", "-");
+                        String key = f.getName().replace('_', '-');
                         if (fieldValue instanceof Map) {
                             hash.put(key, mapToJson((Map) fieldValue));
@@ -1420,5 +1428,5 @@
             Field f;
             try {
-                f = klass.getDeclaredField(key_value.getKey().replace("-", "_"));
+                f = klass.getDeclaredField(key_value.getKey().replace('-', '_'));
             } catch (NoSuchFieldException ex) {
                 continue;
@@ -1837,11 +1845,5 @@
         }
 
-        String[] obsolete = {
-                "remote.control.host", // replaced by individual values for IPv4 and IPv6. To remove end of 2015
-                "osm.notes.enableDownload", // was used prior to r8071 when notes was an hidden feature. To remove end of 2015
-                "mappaint.style.migration.switchedToMapCSS", // was used prior to 8315 for MapCSS switch. To remove end of 2015
-                "mappaint.style.migration.changedXmlName" // was used prior to 8315 for MapCSS switch. To remove end of 2015
-        };
-        for (String key : obsolete) {
+        for (String key : OBSOLETE_PREF_KEYS) {
             if (settingsMap.containsKey(key)) {
                 settingsMap.remove(key);
Index: trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java	(revision 8846)
@@ -67,5 +67,5 @@
     @Override
     public String toString() {
-        return "ProjectionBounds["+minEast+","+minNorth+","+maxEast+","+maxNorth+"]";
+        return "ProjectionBounds["+minEast+","+minNorth+","+maxEast+","+maxNorth+']';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/SystemOfMeasurement.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/SystemOfMeasurement.java	(revision 8846)
@@ -238,14 +238,14 @@
             return formatText(area / areaCustomValue, areaCustomName, format);
         else if (!lowerOnly && a >= (bValue*bValue) / (aValue*aValue))
-            return formatText(area / (bValue * bValue), bName + "\u00b2", format);
+            return formatText(area / (bValue * bValue), bName + '\u00b2', format);
         else if (a < threshold)
-            return "< " + formatText(threshold, aName + "\u00b2", format);
+            return "< " + formatText(threshold, aName + '\u00b2', format);
         else
-            return formatText(a, aName + "\u00b2", format);
+            return formatText(a, aName + '\u00b2', format);
     }
 
     private static String formatText(double v, String unit, NumberFormat format) {
         if (format != null) {
-            return format.format(v) + " " + unit;
+            return format.format(v) + ' ' + unit;
         }
         return String.format(Locale.US, "%." + (v < 9.999999 ? 2 : 1) + "f %s", v, unit);
Index: trunk/src/org/openstreetmap/josm/data/Version.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Version.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/Version.java	(revision 8846)
@@ -226,12 +226,12 @@
         String s = (v == JOSM_UNKNOWN_VERSION) ? "UNKNOWN" : Integer.toString(v);
         if (buildName != null) {
-            s += " " + buildName;
+            s += ' ' + buildName;
         }
         if (isLocalBuild() && v != JOSM_UNKNOWN_VERSION) {
             s += " SVN";
         }
-        String result = "JOSM/1.5 ("+ s+" "+LanguageInfo.getJOSMLocaleCode()+")";
+        String result = "JOSM/1.5 ("+ s+' '+LanguageInfo.getJOSMLocaleCode()+")";
         if (includeOsDetails && Main.platform != null) {
-            result += " " + Main.platform.getOSDescription();
+            result += ' ' + Main.platform.getOSDescription();
         }
         return result;
Index: trunk/src/org/openstreetmap/josm/data/conflict/Conflict.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/conflict/Conflict.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/conflict/Conflict.java	(revision 8846)
@@ -127,5 +127,5 @@
     @Override
     public String toString() {
-        return "Conflict [my=" + my + ", their=" + their + "]";
+        return "Conflict [my=" + my + ", their=" + their + ']';
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java	(revision 8846)
@@ -63,5 +63,5 @@
     @Override
     public String toString() {
-        return "CachedLatLon[lat="+lat()+",lon="+lon()+"]";
+        return "CachedLatLon[lat="+lat()+",lon="+lon()+']';
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 8846)
@@ -162,6 +162,7 @@
     }
 
-    @Override public String toString() {
-        return "EastNorth[e="+x+", n="+y+"]";
+    @Override
+    public String toString() {
+        return "EastNorth[e="+x+", n="+y+']';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 8846)
@@ -151,5 +151,5 @@
         }
 
-        return sDegrees + "\u00B0" + sMinutes + "\'" + sSeconds + "\"";
+        return sDegrees + '\u00B0' + sMinutes + '\'' + sSeconds + '\"';
     }
 
@@ -173,5 +173,5 @@
         }
 
-        return sDegrees + "\u00B0" + sMinutes + "\'";
+        return sDegrees + '\u00B0' + sMinutes + '\'';
     }
 
@@ -325,5 +325,5 @@
         NumberFormat nf = NumberFormat.getInstance();
         nf.setMaximumFractionDigits(5);
-        return "lat=" + nf.format(lat()) + "\u00B0, lon=" + nf.format(lon()) + "\u00B0";
+        return "lat=" + nf.format(lat()) + "\u00B0, lon=" + nf.format(lon()) + '\u00B0';
     }
 
@@ -370,6 +370,7 @@
     }
 
-    @Override public String toString() {
-        return "LatLon[lat="+lat()+",lon="+lon()+"]";
+    @Override
+    public String toString() {
+        return "LatLon[lat="+lat()+",lon="+lon()+']';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/gpx/WayPoint.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/gpx/WayPoint.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/gpx/WayPoint.java	(revision 8846)
@@ -95,5 +95,5 @@
     @Override
     public String toString() {
-        return "WayPoint (" + (attr.containsKey(GPX_NAME) ? get(GPX_NAME) + ", " : "") + getCoor() + ", " + attr + ")";
+        return "WayPoint (" + (attr.containsKey(GPX_NAME) ? get(GPX_NAME) + ", " : "") + getCoor() + ", " + attr + ')';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 8846)
@@ -300,5 +300,5 @@
                 s += " id=" + id;
             }
-            s += "]";
+            s += ']';
             return s;
         }
@@ -861,5 +861,5 @@
     public String getExtendedUrl() {
         return imageryType.getTypeString() + (defaultMaxZoom != 0
-            ? "["+(defaultMinZoom != 0 ? defaultMinZoom+"," : "")+defaultMaxZoom+"]" : "") + ":" + url;
+            ? "["+(defaultMinZoom != 0 ? defaultMinZoom+',' : "")+defaultMaxZoom+"]" : "") + ':' + url;
     }
 
@@ -875,5 +875,5 @@
         String res = name;
         if (pixelPerDegree != 0) {
-            res += " ("+pixelPerDegree+")";
+            res += " ("+pixelPerDegree+')';
         }
         return res;
Index: trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 8846)
@@ -49,9 +49,9 @@
         this.layerName = array.get(1);
         this.name = array.get(2);
-        this.dx = Double.valueOf(array.get(3));
-        this.dy = Double.valueOf(array.get(4));
+        this.dx = Double.parseDouble(array.get(3));
+        this.dy = Double.parseDouble(array.get(4));
         if (array.size() >= 7) {
-            this.centerX = Double.valueOf(array.get(5));
-            this.centerY = Double.valueOf(array.get(6));
+            this.centerX = Double.parseDouble(array.get(5));
+            this.centerY = Double.parseDouble(array.get(6));
         }
         if (projectionCode == null) {
Index: trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java	(revision 8846)
@@ -105,5 +105,5 @@
     @Override
     public void clearCache(TileSource source) {
-        this.cache.remove(source.getName() + ":");
+        this.cache.remove(source.getName() + ':');
     }
 
Index: trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java	(revision 8846)
@@ -91,5 +91,5 @@
                 tsName = "";
             }
-            return tsName.replace(":", "_") + ":" + tileSource.getTileId(tile.getZoom(), tile.getXtile(), tile.getYtile());
+            return tsName.replace(':', '_') + ':' + tileSource.getTileId(tile.getZoom(), tile.getXtile(), tile.getYtile());
         }
         return null;
Index: trunk/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java	(revision 8846)
@@ -211,5 +211,5 @@
                 break;
             default:
-                replacement = "{" + matcher.group(1) + "}";
+                replacement = '{' + matcher.group(1) + '}';
             }
             matcher.appendReplacement(url, replacement);
Index: trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 8846)
@@ -37,5 +37,5 @@
         errorCount++;
         if (errorCount <= MAX_ERRORS) {
-            writer.println("[" + type + "] " + String.format(message, args));
+            writer.println('[' + type + "] " + String.format(message, args));
         }
     }
@@ -187,5 +187,5 @@
         if (Main.isDebugEnabled()) {
             StackTraceElement item = Thread.currentThread().getStackTrace()[2];
-            String operation = getClass().getSimpleName() + "." + item.getMethodName();
+            String operation = getClass().getSimpleName() + '.' + item.getMethodName();
             long elapsedTime = System.currentTimeMillis() - startTime;
             Main.debug(tr("Test ''{0}'' completed in {1}",
Index: trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 8846)
@@ -275,5 +275,5 @@
     public String toString() {
         String coorDesc = isLatLonKnown() ? "lat="+lat+",lon="+lon : "";
-        return "{Node id=" + getUniqueId() + " version=" + getVersion() + " " + getFlagsAsString() + " "  + coorDesc+"}";
+        return "{Node id=" + getUniqueId() + " version=" + getVersion() + ' ' + getFlagsAsString() + ' '  + coorDesc+'}';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java	(revision 8846)
@@ -73,5 +73,5 @@
                 : null;
         if (p == null) {
-            throw new IllegalArgumentException("Expecting n/node/w/way/r/relation/area, but got '" + x[0] + "'");
+            throw new IllegalArgumentException("Expecting n/node/w/way/r/relation/area, but got '" + x[0] + '\'');
         }
         for (final Map.Entry<String, String> i : TextTagParser.readTagsFromText(x[1]).entrySet()) {
Index: trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 8846)
@@ -80,5 +80,5 @@
         @Override
         public String toString() {
-            return super.toString() + "[" + level + "]: " + bbox();
+            return super.toString() + '[' + level + "]: " + bbox();
         }
 
@@ -361,5 +361,5 @@
 
             if (!canRemove()) {
-                abort("attempt to remove non-empty child: " + this.content + " " + Arrays.toString(this.getChildren()));
+                abort("attempt to remove non-empty child: " + this.content + ' ' + Arrays.toString(this.getChildren()));
             }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java	(revision 8846)
@@ -36,5 +36,5 @@
     @Override
     public String toString() {
-        return (memberType != null ? memberType.getAPIName() : "undefined") + " " + memberId;
+        return (memberType != null ? memberType.getAPIName() : "undefined") + ' ' + memberId;
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/Tag.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Tag.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/Tag.java	(revision 8846)
@@ -112,5 +112,5 @@
             return new Tag(x[0], x[1]);
         } else {
-            throw new IllegalArgumentException("'" + s + "' does not contain '='");
+            throw new IllegalArgumentException('\'' + s + "' does not contain '='");
         }
     }
@@ -118,5 +118,5 @@
     @Override
     public String toString() {
-        return key + "=" + value;
+        return key + '=' + value;
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 8846)
@@ -331,5 +331,5 @@
     public String toString() {
         String nodesDesc = isIncomplete() ? "(incomplete)" : "nodes=" + Arrays.toString(nodes);
-        return "{Way id=" + getUniqueId() + " version=" + getVersion()+ " " + getFlagsAsString()  + " " + nodesDesc + "}";
+        return "{Way id=" + getUniqueId() + " version=" + getVersion()+ ' ' + getFlagsAsString() + ' ' + nodesDesc + '}';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 8846)
@@ -94,5 +94,5 @@
     @Override
     public String toString() {
-        return "WaySegment [way=" + way.getUniqueId() + ", lowerIndex=" + lowerIndex + "]";
+        return "WaySegment [way=" + way.getUniqueId() + ", lowerIndex=" + lowerIndex + ']';
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java	(revision 8846)
@@ -238,5 +238,5 @@
         if (get(key) != null)
             return get(key);
-        key = "name:" + Locale.getDefault().getLanguage() + "_" + Locale.getDefault().getCountry();
+        key = "name:" + Locale.getDefault().getLanguage() + '_' + Locale.getDefault().getCountry();
         if (get(key) != null)
             return get(key);
@@ -278,5 +278,5 @@
                 + (user != null ? "user=" + user + ", " : "") + "changesetId="
                 + changesetId
-                + "]";
+                + ']';
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 8846)
@@ -181,5 +181,5 @@
     @Override
     public String toString() {
-        return "BoundingXYVisitor["+bounds+"]";
+        return "BoundingXYVisitor["+bounds+']';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 8846)
@@ -1729,5 +1729,5 @@
                 System.err.println("; phase 2 (draw): " + Utils.getDurationString(timeFinished - timePhase1) +
                     "; total: " + Utils.getDurationString(timeFinished - timeStart) +
-                    " (scale: " + circum + " zoom level: " + Selector.GeneralSelector.scale2level(circum) + ")");
+                    " (scale: " + circum + " zoom level: " + Selector.GeneralSelector.scale2level(circum) + ')');
             }
 
Index: trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 8846)
@@ -199,5 +199,5 @@
                     throw new ProjectionConfigurationException(tr("UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."));
                 try {
-                    zone = Integer.parseInt(zoneStr);
+                    zone = Integer.valueOf(zoneStr);
                 } catch (NumberFormatException e) {
                     zone = null;
Index: trunk/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Ellipsoid.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/projection/Ellipsoid.java	(revision 8846)
@@ -181,5 +181,5 @@
     @Override
     public String toString() {
-        return "Ellipsoid{a="+a+", b="+b+"}";
+        return "Ellipsoid{a="+a+", b="+b+'}';
     }
 
Index: trunk/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java	(revision 8846)
@@ -27,5 +27,5 @@
     @Override
     public String toString() {
-        return "CentricDatum{ellipsoid="+ellps+"}";
+        return "CentricDatum{ellipsoid="+ellps+'}';
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/TestError.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 8846)
@@ -232,5 +232,5 @@
                 type = "n";
             }
-            strings.add(type + "_" + o.getId());
+            strings.add(type + '_' + o.getId());
         }
         for (String o : strings) {
@@ -243,5 +243,5 @@
         String ignorestring = getIgnoreGroup();
         if (descriptionEn != null) {
-            ignorestring += "_" + descriptionEn;
+            ignorestring += '_' + descriptionEn;
         }
         return ignorestring;
@@ -381,5 +381,5 @@
     @Override
     public String toString() {
-        return "TestError [tester=" + tester + ", code=" + code + ", message=" + message + "]";
+        return "TestError [tester=" + tester + ", code=" + code + ", message=" + message + ']';
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java	(revision 8846)
@@ -99,4 +99,7 @@
     protected static final int DUPLICATE_NODE_WATERWAY = 17;
 
+    private static final String[] TYPES = {
+            "none", "highway", "railway", "waterway", "boundary", "power", "natural", "landuse", "building"};
+
     /** The map of potential duplicates.
      *
@@ -168,5 +171,4 @@
 
         Map<String, Boolean> typeMap = new HashMap<>();
-        String[] types = {"none", "highway", "railway", "waterway", "boundary", "power", "natural", "landuse", "building"};
 
         // check whether we have multiple nodes at the same position with the same tag set
@@ -175,6 +177,6 @@
             if (mm.get(tagSet).size() > 1) {
 
-                for (String type: types) {
-                    typeMap.put(type, false);
+                for (String type: TYPES) {
+                    typeMap.put(type, Boolean.FALSE);
                 }
 
@@ -190,14 +192,13 @@
                                 for (String type: typeMap.keySet()) {
                                     if (keys.containsKey(type)) {
-                                        typeMap.put(type, true);
+                                        typeMap.put(type, Boolean.TRUE);
                                         typed = true;
                                     }
                                 }
                                 if (!typed) {
-                                    typeMap.put("none", true);
+                                    typeMap.put("none", Boolean.TRUE);
                                 }
                             }
                         }
-
                     }
                 }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 8846)
@@ -102,5 +102,5 @@
                     String ending = "";
                     if (domain.contains("/")) {
-                        int idx = domain.indexOf("/");
+                        int idx = domain.indexOf('/');
                         ending = domain.substring(idx, domain.length());
                         domain = domain.substring(0, idx);
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/Lanes.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/Lanes.java	(revision 8846)
@@ -45,5 +45,5 @@
     protected void checkNumberOfLanesByKey(final OsmPrimitive p, String lanesKey, String message) {
         final Collection<String> keysForPattern = new ArrayList<>(Utils.filter(p.keySet(),
-                Predicates.stringContainsPattern(Pattern.compile(":" + lanesKey + "$"))));
+                Predicates.stringContainsPattern(Pattern.compile(':' + lanesKey + '$'))));
         keysForPattern.removeAll(Arrays.asList(BLACKLIST));
         if (keysForPattern.isEmpty()) {
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 8846)
@@ -126,5 +126,5 @@
         @Override
         public String toString() {
-            return "GroupedMapCSSRule [selectors=" + selectors + ", declaration=" + declaration + "]";
+            return "GroupedMapCSSRule [selectors=" + selectors + ", declaration=" + declaration + ']';
         }
     }
@@ -301,9 +301,9 @@
                         check.alternatives.add(val);
                     } else if ("assertMatch".equals(ai.key) && val != null) {
-                        check.assertions.put(val, true);
+                        check.assertions.put(val, Boolean.TRUE);
                     } else if ("assertNoMatch".equals(ai.key) && val != null) {
-                        check.assertions.put(val, false);
+                        check.assertions.put(val, Boolean.FALSE);
                     } else {
-                        throw new IllegalDataException("Cannot add instruction " + ai.key + ": " + ai.val + "!");
+                        throw new IllegalDataException("Cannot add instruction " + ai.key + ": " + ai.val + '!');
                     }
                 }
@@ -619,5 +619,5 @@
         @Override
         public String toString() {
-            return "MapCSSTagCheckerAndRule [rule=" + rule + "]";
+            return "MapCSSTagCheckerAndRule [rule=" + rule + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java	(revision 8846)
@@ -240,5 +240,5 @@
         @Override
         public String toString() {
-            return "replaceAll(" + regExpr + ", " + replacement + ")";
+            return "replaceAll(" + regExpr + ", " + replacement + ')';
         }
     }
@@ -304,5 +304,5 @@
         @Override
         public String toString() {
-            return "synonyms(" + replacement + ", " + Arrays.toString(words) + ")";
+            return "synonyms(" + replacement + ", " + Arrays.toString(words) + ')';
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 8846)
@@ -241,5 +241,5 @@
                 }
             } catch (IOException e) {
-                errorSources += source + "\n";
+                errorSources += source + '\n';
             }
         }
Index: trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java	(revision 8846)
@@ -63,5 +63,5 @@
             displayName = name;
         } else {
-            displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size);
+            displayName = size + ' ' + trn(multipleClassname, multiplePluralClassname, size);
             if (multipleName.length() > 0) {
                 if (multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
Index: trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java	(revision 8846)
@@ -358,5 +358,5 @@
                 relationName = Long.toString(relation.getId());
             } else {
-                relationName = "\"" + relationName + "\"";
+                relationName = '\"' + relationName + '\"';
             }
             result.append(" (").append(relationName).append(", ");
@@ -443,5 +443,5 @@
         String admin_level = relation.get("admin_level");
         if (admin_level != null) {
-            name += "["+admin_level+"]";
+            name += '['+admin_level+']';
         }
 
@@ -623,5 +623,5 @@
         /* note: length == 0 should no longer happen, but leave the bracket code
            nevertheless, who knows what future brings */
-        sb.append((sb.length() > 0) ? " ("+nodes+")" : nodes);
+        sb.append((sb.length() > 0) ? " ("+nodes+')' : nodes);
         decorateNameWithId(sb, way);
         return sb.toString();
@@ -664,5 +664,5 @@
             sb.append(Long.toString(relation.getId())).append(", ");
         } else {
-            sb.append("\"").append(nameTag).append("\", ");
+            sb.append('\"').append(nameTag).append("\", ");
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/GettingStarted.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 8846)
@@ -177,5 +177,5 @@
             URL u = getClass().getResource(im);
             if (u != null) {
-                m.appendReplacement(sb, Matcher.quoteReplacement("src=\"" + u + "\""));
+                m.appendReplacement(sb, Matcher.quoteReplacement("src=\"" + u + '\"'));
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 8846)
@@ -126,13 +126,13 @@
                 "\tjava -jar josm.jar <options>...\n\n"+
                 tr("options")+":\n"+
-                "\t--help|-h                                 "+tr("Show this help")+"\n"+
-                "\t--geometry=widthxheight(+|-)x(+|-)y       "+tr("Standard unix geometry argument")+"\n"+
-                "\t[--download=]minlat,minlon,maxlat,maxlon  "+tr("Download the bounding box")+"\n"+
-                "\t[--download=]<URL>                        "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z)")+"\n"+
-                "\t[--download=]<filename>                   "+tr("Open a file (any file type that can be opened with File/Open)")+"\n"+
-                "\t--downloadgps=minlat,minlon,maxlat,maxlon "+tr("Download the bounding box as raw GPS")+"\n"+
-                "\t--downloadgps=<URL>                       "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z) as raw GPS")+"\n"+
-                "\t--selection=<searchstring>                "+tr("Select with the given search")+"\n"+
-                "\t--[no-]maximize                           "+tr("Launch in maximized mode")+"\n"+
+                "\t--help|-h                                 "+tr("Show this help")+'\n'+
+                "\t--geometry=widthxheight(+|-)x(+|-)y       "+tr("Standard unix geometry argument")+'\n'+
+                "\t[--download=]minlat,minlon,maxlat,maxlon  "+tr("Download the bounding box")+'\n'+
+                "\t[--download=]<URL>                        "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z)")+'\n'+
+                "\t[--download=]<filename>                   "+tr("Open a file (any file type that can be opened with File/Open)")+'\n'+
+                "\t--downloadgps=minlat,minlon,maxlat,maxlon "+tr("Download the bounding box as raw GPS")+'\n'+
+                "\t--downloadgps=<URL>                       "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z) as raw GPS")+'\n'+
+                "\t--selection=<searchstring>                "+tr("Select with the given search")+'\n'+
+                "\t--[no-]maximize                           "+tr("Launch in maximized mode")+'\n'+
                 "\t--reset-preferences                       "+tr("Reset the preferences to default")+"\n\n"+
                 "\t--load-preferences=<url-to-xml>           "+tr("Changes preferences according to the XML file")+"\n\n"+
@@ -155,5 +155,5 @@
                         tr("examples")+":\n"+
                         "\tjava -jar josm.jar track1.gpx track2.gpx london.osm\n"+
-                        "\tjava -jar josm.jar "+OsmUrlToBounds.getURL(43.2, 11.1, 13)+"\n"+
+                        "\tjava -jar josm.jar "+OsmUrlToBounds.getURL(43.2, 11.1, 13)+'\n'+
                         "\tjava -jar josm.jar london.osm --selection=http://www.ostertag.name/osm/OSM_errors_node-duplicate.xml\n"+
                         "\tjava -jar josm.jar 43.2,11.1,43.4,11.4\n"+
@@ -161,6 +161,6 @@
                         "\tjava -Djosm.home=/home/user/.josm_dev -jar josm.jar\n"+
                         "\tjava -Xmx1024m -jar josm.jar\n\n"+
-                        tr("Parameters --download, --downloadgps, and --selection are processed in this order.")+"\n"+
-                        tr("Make sure you load some data if you use --selection.")+"\n"
+                        tr("Parameters --download, --downloadgps, and --selection are processed in this order.")+'\n'+
+                        tr("Make sure you load some data if you use --selection.")+'\n'
                 );
     }
@@ -212,5 +212,5 @@
 
         Option(boolean requiresArgument) {
-            this.name = name().toLowerCase(Locale.ENGLISH).replace("_", "-");
+            this.name = name().toLowerCase(Locale.ENGLISH).replace('_', '-');
             this.requiresArg = requiresArgument;
         }
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 8846)
@@ -1438,6 +1438,6 @@
      */
     public int getViewID() {
-        String x = center.east() + "_" + center.north() + "_" + scale + "_" +
-                getWidth() + "_" + getHeight() + "_" + getProjection().toString();
+        String x = center.east() + '_' + center.north() + '_' + scale + '_' +
+                getWidth() + '_' + getHeight() + '_' + getProjection().toString();
         CRC32 id = new CRC32();
         id.update(x.getBytes(StandardCharsets.UTF_8));
Index: trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java	(revision 8846)
@@ -49,4 +49,9 @@
     private static final int MAC_MOUSE_BUTTON3_MASK = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
 
+    private static final String[] N = {
+            ",", ".", "up", "right", "down", "left"};
+    private static final int[] K = {
+            KeyEvent.VK_COMMA, KeyEvent.VK_PERIOD, KeyEvent.VK_UP, KeyEvent.VK_RIGHT, KeyEvent.VK_DOWN, KeyEvent.VK_LEFT};
+
     // start and end point of selection rectangle
     private Point iStartSelectionPoint;
@@ -65,11 +70,8 @@
         iSlippyMapChooser.addMouseMotionListener(this);
 
-        String[] n = {",", ".", "up", "right", "down", "left"};
-        int[] k = {KeyEvent.VK_COMMA, KeyEvent.VK_PERIOD, KeyEvent.VK_UP, KeyEvent.VK_RIGHT, KeyEvent.VK_DOWN, KeyEvent.VK_LEFT};
-
         if (contentPane != null) {
-            for (int i = 0; i < n.length; ++i) {
+            for (int i = 0; i < N.length; ++i) {
                 contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                        KeyStroke.getKeyStroke(k[i], KeyEvent.CTRL_DOWN_MASK), "MapMover.Zoomer." + n[i]);
+                        KeyStroke.getKeyStroke(K[i], KeyEvent.CTRL_DOWN_MASK), "MapMover.Zoomer." + N[i]);
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 8846)
@@ -216,5 +216,5 @@
                             conflicts.getRelationConflicts().size(),
                             conflicts.getWayConflicts().size(),
-                            conflicts.getNodeConflicts().size())+")");
+                            conflicts.getNodeConflicts().size())+')');
         } else {
             setTitle(tr("Conflict"));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 8846)
@@ -131,5 +131,5 @@
     class DataText {
         private static final String INDENT = "  ";
-        private static final String NL = "\n";
+        private static final char NL = '\n';
 
         private StringBuilder s = new StringBuilder();
@@ -364,5 +364,5 @@
                 StyleList sl = elemstyles.get(osm, scale, nc);
                 for (ElemStyle s : sl) {
-                    txtMappaint.append(" * ").append(s).append("\n");
+                    txtMappaint.append(" * ").append(s).append('\n');
                 }
                 txtMappaint.append("\n\n");
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 8846)
@@ -200,5 +200,5 @@
         }
         this.latLonCoordinates = ll;
-        tfLatLon.setText(ll.latToString(CoordinateFormat.getDefaultFormat()) + " " + ll.lonToString(CoordinateFormat.getDefaultFormat()));
+        tfLatLon.setText(ll.latToString(CoordinateFormat.getDefaultFormat()) + ' ' + ll.lonToString(CoordinateFormat.getDefaultFormat()));
         EastNorth en = Main.getProjection().latlon2eastNorth(ll);
         tfEastNorth.setText(en.east()+" "+en.north());
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 8846)
@@ -655,5 +655,5 @@
                     String line;
                     while ((line = reader.readLine()) != null) {
-                        txtSource.append(line + "\n");
+                        txtSource.append(line + '\n');
                     }
                 } finally {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 8846)
@@ -352,5 +352,4 @@
     }
 
-
     /**
      * Hides the dialog
@@ -361,5 +360,5 @@
         windowMenuItem.setState(false);
         setIsShowing(false);
-        toggleAction.putValue("selected", false);
+        toggleAction.putValue("selected", Boolean.FALSE);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 8846)
@@ -226,5 +226,5 @@
             if (infoObject instanceof User) {
                 User user = (User) infoObject;
-                return Main.getBaseUserUrl() + "/" + Utils.encodeUrl(user.getName()).replaceAll("\\+", "%20");
+                return Main.getBaseUserUrl() + '/' + Utils.encodeUrl(user.getName()).replaceAll("\\+", "%20");
             } else {
                 return null;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 8846)
@@ -1168,5 +1168,5 @@
                 if (values.size() == 1) {
                     url = TAGINFO_URL_PROP.get() + "tags/" + key /* do not URL encode key, otherwise addr:street does not work */
-                            + "=" + Utils.encodeUrl(values.keySet().iterator().next());
+                            + '=' + Utils.encodeUrl(values.keySet().iterator().next());
                 } else {
                     url = TAGINFO_URL_PROP.get() + "keys/" + key; /* do not URL encode key, otherwise addr:street does not work */
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 8846)
@@ -232,5 +232,5 @@
                 new String[]{tr("Replace"), tr("Cancel")});
         ed.setButtonIcons(new String[]{"purge", "cancel"});
-        ed.setContent(action+"\n"+ tr("The new key is already used, overwrite values?"));
+        ed.setContent(action+'\n'+ tr("The new key is already used, overwrite values?"));
         ed.setCancelButton(2);
         ed.toggleEnable(togglePref);
@@ -651,5 +651,5 @@
                 lines.add(code(sc.getKeyText()) + tr("to apply first suggestion"));
             }
-            lines.add(code(KeyEvent.getKeyModifiersText(KeyEvent.SHIFT_MASK)+"+"+KeyEvent.getKeyText(KeyEvent.VK_ENTER))
+            lines.add(code(KeyEvent.getKeyModifiersText(KeyEvent.SHIFT_MASK)+'+'+KeyEvent.getKeyText(KeyEvent.VK_ENTER))
                     +tr("to add without closing the dialog"));
             sc = Shortcut.findShortcut(KeyEvent.VK_1, commandDownMask | KeyEvent.SHIFT_DOWN_MASK);
@@ -750,5 +750,5 @@
                         + "<table><tr>"
                         + "<td>" + count + ".</td>"
-                        + "<td style='border:1px solid gray'>" + XmlWriter.encode(t.toString(), true) + "<" +
+                        + "<td style='border:1px solid gray'>" + XmlWriter.encode(t.toString(), true) + '<' +
                         "/td></tr></table></html>");
                 tagLabel.setFont(tagLabel.getFont().deriveFont(Font.PLAIN));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 8846)
@@ -90,5 +90,5 @@
         @Override
         public String toString() {
-            return "[Context: layer=" + layer.getName() + ",relation=" + relation.getId() + "]";
+            return "[Context: layer=" + layer.getName() + ",relation=" + relation.getId() + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java	(revision 8846)
@@ -70,5 +70,5 @@
         return "[P "+linkPrev+" ;N "+linkNext+" ;D "+direction+" ;L "+isLoop+
                 " ;FP " + isOnewayLoopForwardPart+";BP " + isOnewayLoopBackwardPart+
-                ";OH " + isOnewayHead+";OT " + isOnewayTail+"]";
+                ";OH " + isOnewayHead+";OT " + isOnewayTail+']';
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 8846)
@@ -601,5 +601,5 @@
             if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED)
                 return;
-            if (e.getURL() == null || e.getURL().toString().startsWith(url+"#")) {
+            if (e.getURL() == null || e.getURL().toString().startsWith(url+'#')) {
                 // Probably hyperlink event on a an A-element with a href consisting of a fragment only, i.e. "#ALocalFragment".
                 String fragment = getUrlFragment(e);
Index: trunk/src/org/openstreetmap/josm/gui/help/HelpUtil.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/HelpUtil.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/help/HelpUtil.java	(revision 8846)
@@ -127,5 +127,5 @@
         if (ret == null)
             return ret;
-        ret = "/" + ret + Main.pref.get("help.pathhelp", "/Help").replaceAll("^\\/+", ""); // remove leading /
+        ret = '/' + ret + Main.pref.get("help.pathhelp", "/Help").replaceAll("^\\/+", ""); // remove leading /
         return ret.replaceAll("\\/+", "\\/"); // collapse sequences of //
     }
@@ -146,5 +146,5 @@
         if (prefix == null || topic == null || topic.trim().isEmpty() || "/".equals(topic.trim()))
             return prefix;
-        prefix += "/" + topic;
+        prefix += '/' + topic;
         return prefix.replaceAll("\\/+", "\\/"); // collapse sequences of //
     }
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 8846)
@@ -185,5 +185,5 @@
 
     protected static String getUserUrl(String username) {
-        return Main.getBaseUserUrl() + "/" +  Utils.encodeUrl(username).replaceAll("\\+", "%20");
+        return Main.getBaseUserUrl() + '/' +  Utils.encodeUrl(username).replaceAll("\\+", "%20");
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 8846)
@@ -203,5 +203,5 @@
             if (infoObject instanceof HistoryOsmPrimitive) {
                 HistoryOsmPrimitive hp = (HistoryOsmPrimitive) infoObject;
-                return hp.getUser() == null ? null : Main.getBaseUserUrl() + "/" + hp.getUser().getName();
+                return hp.getUser() == null ? null : Main.getBaseUserUrl() + '/' + hp.getUser().getName();
             } else {
                 return null;
Index: trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 8846)
@@ -314,5 +314,5 @@
             lblHeading.setText(
                     "<html>" + tr("Authenticating at the HTTP proxy ''{0}'' failed. Please enter a valid username and a valid password.",
-                            Main.pref.get(ProxyPreferencesPanel.PROXY_HTTP_HOST) + ":" +
+                            Main.pref.get(ProxyPreferencesPanel.PROXY_HTTP_HOST) + ':' +
                             Main.pref.get(ProxyPreferencesPanel.PROXY_HTTP_PORT)) + "</html>");
             lblWarning.setText("<html>" +
Index: trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java	(revision 8846)
@@ -33,5 +33,5 @@
     private static final Color colorError = new Color(255, 197, 197);
     private static final String separator = System.getProperty("file.separator");
-    private static final String ellipsis = "…" + separator;
+    private static final String ellipsis = '…' + separator;
 
     private final JLabel lblLayerName = new JLabel();
Index: trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java	(revision 8846)
@@ -96,5 +96,5 @@
             tags.put("created_by", agent);
         } else if (!created_by.contains(agent)) {
-            tags.put("created_by", created_by + ";" + agent);
+            tags.put("created_by", created_by + ';' + agent);
         }
         pnlTagEditor.getModel().initFromTags(tags);
Index: trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 8846)
@@ -319,5 +319,5 @@
         private String getSizeString(int size) {
             StringBuilder ret = new StringBuilder();
-            return ret.append(size).append("x").append(size).toString();
+            return ret.append(size).append('x').append(size).toString();
         }
 
@@ -350,9 +350,9 @@
                         {"Tile url", url},
                         {"Tile size", getSizeString(clickedTile.getTileSource().getTileSize()) },
-                        {"Tile display size", new StringBuilder().append(displaySize.width).append("x").append(displaySize.height).toString()},
+                        {"Tile display size", new StringBuilder().append(displaySize.width).append('x').append(displaySize.height).toString()},
                 };
 
                 for (String[] entry: content) {
-                    panel.add(new JLabel(tr(entry[0]) + ":"), GBC.std());
+                    panel.add(new JLabel(tr(entry[0]) + ':'), GBC.std());
                     panel.add(GBC.glue(5, 0), GBC.std());
                     panel.add(createTextField(entry[1]), GBC.eol().fill(GBC.HORIZONTAL));
@@ -360,5 +360,5 @@
 
                 for (Entry<String, String> e: clickedTile.getMetadata().entrySet()) {
-                    panel.add(new JLabel(tr("Metadata ") + tr(e.getKey()) + ":"), GBC.std());
+                    panel.add(new JLabel(tr("Metadata ") + tr(e.getKey()) + ':'), GBC.std());
                     panel.add(GBC.glue(5, 0), GBC.std());
                     String value = e.getValue();
@@ -764,5 +764,5 @@
         boolean zia = currentZoomLevel < this.getMaxZoomLvl();
         if (Main.isDebugEnabled()) {
-            Main.debug("zoomIncreaseAllowed(): " + zia + " " + currentZoomLevel + " vs. " + this.getMaxZoomLvl());
+            Main.debug("zoomIncreaseAllowed(): " + zia + ' ' + currentZoomLevel + " vs. " + this.getMaxZoomLvl());
         }
         return zia;
@@ -1054,8 +1054,8 @@
             for (String s: text.split(" ")) {
                 if (g.getFontMetrics().stringWidth(line.toString() + s) > tileSource.getTileSize()) {
-                    ret.append(line).append("\n");
+                    ret.append(line).append('\n');
                     line.setLength(0);
                 }
-                line.append(s).append(" ");
+                line.append(s).append(' ');
             }
             ret.append(line);
@@ -1528,5 +1528,5 @@
     private Tile getTileForPixelpos(int px, int py) {
         if (Main.isDebugEnabled()) {
-            Main.debug("getTileForPixelpos("+px+", "+py+")");
+            Main.debug("getTileForPixelpos("+px+", "+py+')');
         }
         MapView mv = Main.map.mapView;
Index: trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 8846)
@@ -100,5 +100,5 @@
             if (earliestDate.equals(latestDate)) {
                 DateFormat tf = DateUtils.getTimeFormat(DateFormat.SHORT);
-                ts += earliestDate + " ";
+                ts += earliestDate + ' ';
                 ts += tf.format(bounds[0]) + " - " + tf.format(bounds[1]);
             } else {
Index: trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 8846)
@@ -152,5 +152,5 @@
             }
             if (dx != 0 || dy != 0) {
-                panel.add(new JLabel(tr("Offset: ") + dx + ";" + dy), GBC.eol().insets(0, 5, 10, 0));
+                panel.add(new JLabel(tr("Offset: ") + dx + ';' + dy), GBC.eol().insets(0, 5, 10, 0));
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 8846)
@@ -180,5 +180,5 @@
     @Override
     public String getToolTipText() {
-        return noteData.getNotes().size() + " " + tr("Notes");
+        return noteData.getNotes().size() + ' ' + tr("Notes");
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 8846)
@@ -489,15 +489,15 @@
         String nodeText = trn("{0} node", "{0} nodes", counter.nodes, counter.nodes);
         if (counter.deletedNodes > 0) {
-            nodeText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedNodes, counter.deletedNodes)+")";
+            nodeText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedNodes, counter.deletedNodes)+')';
         }
 
         String wayText = trn("{0} way", "{0} ways", counter.ways, counter.ways);
         if (counter.deletedWays > 0) {
-            wayText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedWays, counter.deletedWays)+")";
+            wayText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedWays, counter.deletedWays)+')';
         }
 
         String relationText = trn("{0} relation", "{0} relations", counter.relations, counter.relations);
         if (counter.deletedRelations > 0) {
-            relationText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedRelations, counter.deletedRelations)+")";
+            relationText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedRelations, counter.deletedRelations)+')';
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 8846)
@@ -300,5 +300,5 @@
                     JOptionPane.showMessageDialog(
                             Main.parent,
-                            tr("Could not read \"{0}\"", sel.getName())+"\n"+x.getMessage(),
+                            tr("Could not read \"{0}\"", sel.getName())+'\n'+x.getMessage(),
                             tr("Error"),
                             JOptionPane.ERROR_MESSAGE
@@ -394,5 +394,5 @@
             gc.gridx = 2;
             gc.weightx = 0.2;
-            panelTf.add(new JLabel(" ["+dateFormat.toLocalizedPattern()+"]"), gc);
+            panelTf.add(new JLabel(" ["+dateFormat.toLocalizedPattern()+']'), gc);
 
             gc.gridx = 0;
@@ -511,5 +511,5 @@
                     if (date != null) {
                         lbExifTime.setText(DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM).format(date));
-                        tfGpsTime.setText(DateUtils.getDateFormat(DateFormat.SHORT).format(date)+" ");
+                        tfGpsTime.setText(DateUtils.getDateFormat(DateFormat.SHORT).format(date)+' ');
                         tfGpsTime.setEnabled(true);
                     } else {
@@ -928,5 +928,5 @@
                             : (int) Math.floor(tz/2) + ":30";
                     if (sldTimezone.getValue() < 0) {
-                        zone = "-" + zone;
+                        zone = '-' + zone;
                     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 8846)
@@ -376,5 +376,5 @@
         return "<html>"
                 + trn("{0} image loaded.", "{0} images loaded.", n, n)
-                + " " + trn("{0} was found to be GPS tagged.", "{0} were found to be GPS tagged.", tagged, tagged)
+                + ' ' + trn("{0} was found to be GPS tagged.", "{0} were found to be GPS tagged.", tagged, tagged)
                 + (newdata > 0 ? "<br>" + trn("{0} has updated GPS data.", "{0} have updated GPS data.", newdata, newdata) : "")
                 + "</html>";
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 8846)
@@ -106,5 +106,5 @@
             }
             if (names != null) {
-                names += ")";
+                names += ')';
             } else {
                 names = "";
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(revision 8846)
@@ -112,5 +112,5 @@
             String key = "draw.rawgps.layer.wpt.pattern";
             if (layerName != null) {
-                key += "." + layerName;
+                key += '.' + layerName;
             }
             TemplateEntryProperty result = CACHE.get(key);
@@ -127,5 +127,5 @@
             String key = "draw.rawgps.layer.audiowpt.pattern";
             if (layerName != null) {
-                key += "." + layerName;
+                key += '.' + layerName;
             }
             TemplateEntryProperty result = CACHE.get(key);
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 8846)
@@ -219,9 +219,11 @@
     }
 
-    @Override public String getToolTipText() {
-        return data.size()+" "+trn("marker", "markers", data.size());
-    }
-
-    @Override public void mergeFrom(Layer from) {
+    @Override
+    public String getToolTipText() {
+        return data.size()+' '+trn("marker", "markers", data.size());
+    }
+
+    @Override
+    public void mergeFrom(Layer from) {
         MarkerLayer layer = (MarkerLayer) from;
         data.addAll(layer.data);
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java	(revision 8846)
@@ -43,5 +43,5 @@
             new Notification(
                     "<b>" + tr("There was an error while trying to display the URL for this marker") + "</b><br>" +
-                                  tr("(URL was: ") + webUrl + ")" + "<br>" + error)
+                                  tr("(URL was: ") + webUrl + ')' + "<br>" + error)
                     .setIcon(JOptionPane.ERROR_MESSAGE)
                     .setDuration(Notification.TIME_LONG)
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java	(revision 8846)
@@ -231,7 +231,6 @@
     @Override
     public String toString() {
-        return "BoxTextElemStyle{" + super.toString() + " " + text.toStringImpl()
+        return "BoxTextElemStyle{" + super.toString() + ' ' + text.toStringImpl()
                 + " box=" + box + " hAlign=" + hAlign + " vAlign=" + vAlign + '}';
     }
-
 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 8846)
@@ -208,5 +208,5 @@
         StringBuilder res = new StringBuilder("Cascade{ ");
         for (Entry<String, Object> entry : prop.entrySet()) {
-            res.append(entry.getKey()+":");
+            res.append(entry.getKey()+':');
             Object val = entry.getValue();
             if (val instanceof float[]) {
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 8846)
@@ -132,5 +132,5 @@
             throw new AssertionError("Range violated: " + e.getMessage()
                     + " (object: " + osm.getPrimitiveId() + ", current style: "+osm.mappaintStyle
-                    + ", scale: " + scale + ", new stylelist: " + p.a + ", new range: " + p.b + ")", e);
+                    + ", scale: " + scale + ", new stylelist: " + p.a + ", new range: " + p.b + ')', e);
         }
         osm.mappaintCacheIdx = cacheIdx;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java	(revision 8846)
@@ -63,5 +63,5 @@
         @Override
         public String toString() {
-            return "{"  + getClass().getSimpleName() + " defaultLabel=" + defaultLabel + "}";
+            return '{' + getClass().getSimpleName() + " defaultLabel=" + defaultLabel + '}';
         }
 
@@ -119,5 +119,5 @@
         @Override
         public String toString() {
-            return "{" + getClass().getSimpleName() + " defaultLabelTag=" + defaultLabelTag + "}";
+            return '{' + getClass().getSimpleName() + " defaultLabelTag=" + defaultLabelTag + '}';
         }
 
@@ -277,5 +277,5 @@
                         name = comp;
                     } else {
-                        name += " (" + comp + ")";
+                        name += " (" + comp + ')';
                     }
                     break;
@@ -293,5 +293,5 @@
         @Override
         public String toString() {
-            return "{" + getClass().getSimpleName() +"}";
+            return "{" + getClass().getSimpleName() +'}';
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 8846)
@@ -139,5 +139,5 @@
             if (widthTag != null) {
                 try {
-                    realWidth = Float.valueOf(widthTag);
+                    realWidth = Float.parseFloat(widthTag);
                 } catch (NumberFormatException nfe) {
                     Main.warn(nfe);
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java	(revision 8846)
@@ -56,5 +56,5 @@
     @Override
     public String toString() {
-        return "LineTextElemStyle{" + super.toString() + "text=" + text + "}";
+        return "LineTextElemStyle{" + super.toString() + "text=" + text + '}';
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java	(revision 8846)
@@ -43,5 +43,5 @@
                 // be a modifier. Can be overridden in style definition.
                 if (!"default".equals(layer) && !"*".equals(layer)) {
-                    c.put(MODIFIER, true);
+                    c.put(MODIFIER, Boolean.TRUE);
                 }
             }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java	(revision 8846)
@@ -390,11 +390,11 @@
         s.append(super.toString());
         if (mapImage != null) {
-            s.append(" icon=[" + mapImage + "]");
+            s.append(" icon=[" + mapImage + ']');
         }
         if (symbol != null) {
-            s.append(" symbol=[" + symbol + "]");
+            s.append(" symbol=[" + symbol + ']');
         }
         if (mapImageAngle != null) {
-            s.append(" mapImageAngle=[" + mapImageAngle + "]");
+            s.append(" mapImageAngle=[" + mapImageAngle + ']');
         }
         s.append('}');
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/Range.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/Range.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/Range.java	(revision 8846)
@@ -21,5 +21,5 @@
     public Range(double lower, double upper) {
         if (lower < 0 || lower >= upper)
-            throw new IllegalArgumentException("Invalid range: "+lower+"-"+upper);
+            throw new IllegalArgumentException("Invalid range: "+lower+'-'+upper);
         this.lower = lower;
         this.upper = upper;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java	(revision 8846)
@@ -91,5 +91,5 @@
         return "RepeatImageStyle{" + super.toString() + "pattern=[" + pattern +
                 "], offset=" + offset + ", spacing=" + spacing +
-                ", phase=" + (-phase) + ", align=" + align + "}";
+                ", phase=" + (-phase) + ", align=" + align + '}';
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 8846)
@@ -271,5 +271,5 @@
         @Override
         public String toString() {
-            return "[" + k + "'" + op + "'" + v + "]";
+            return '[' + k + '\'' + op + '\'' + v + ']';
         }
     }
@@ -458,5 +458,5 @@
         @Override
         public String toString() {
-            return "[" + (negateResult ? "!" : "") + label + "]";
+            return '[' + (negateResult ? "!" : "") + label + ']';
         }
     }
@@ -479,5 +479,5 @@
         @Override
         public String toString() {
-            return (not ? "!" : "") + "." + id;
+            return (not ? "!" : "") + '.' + id;
         }
     }
@@ -629,5 +629,5 @@
         @Override
         public String toString() {
-            return (not ? "!" : "") + ":" + method.getName();
+            return (not ? "!" : "") + ':' + method.getName();
         }
     }
@@ -660,5 +660,5 @@
         @Override
         public String toString() {
-            return "[" + e + "]";
+            return "[" + e + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java	(revision 8846)
@@ -88,5 +88,5 @@
         public String toString() {
             return key + ": " + (val instanceof float[] ? Arrays.toString((float[]) val) :
-                val instanceof String ? "String<"+val+">" : val) + ';';
+                val instanceof String ? "String<"+val+'>' : val) + ';';
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java	(revision 8846)
@@ -28,5 +28,5 @@
             return Arrays.toString((float[]) literal);
         }
-        return "<" + literal + ">";
+        return "<" + literal + '>';
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java	(revision 8846)
@@ -70,5 +70,5 @@
         @Override
         public String toString() {
-            return "Declaration [instructions=" + instructions + ", idx=" + idx + "]";
+            return "Declaration [instructions=" + instructions + ", idx=" + idx + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 8846)
@@ -106,5 +106,5 @@
             try {
                 SUPPORTED_KEYS.add((String) f.get(null));
-                if (!f.getName().toLowerCase(Locale.ENGLISH).replace("_", "-").equals(f.get(null))) {
+                if (!f.getName().toLowerCase(Locale.ENGLISH).replace('_', '-').equals(f.get(null))) {
                     throw new RuntimeException(f.getName());
                 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 8846)
@@ -432,5 +432,5 @@
         @Override
         public String toString() {
-            return left + " " + (ChildOrParentSelectorType.PARENT.equals(type) ? "<" : ">") + link + " " + right;
+            return left + " " + (ChildOrParentSelectorType.PARENT.equals(type) ? '<' : '>') + link + ' ' + right;
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java	(revision 8846)
@@ -22,9 +22,9 @@
     public String getKey() {
         if (value != null)
-            return "n" + key + "=" + value;
+            return 'n' + key + '=' + value;
         else if (boolValue != null)
-            return "b" + key  + "=" + OsmUtils.getNamedOsmBoolean(boolValue);
+            return 'b' + key  + '=' + OsmUtils.getNamedOsmBoolean(boolValue);
         else
-            return "x" + key;
+            return 'x' + key;
     }
 
@@ -35,5 +35,5 @@
     @Override
     public String toString() {
-      return "Rule["+key+","+(boolValue != null ? "b="+boolValue : "v="+value)+"]";
+      return "Rule["+key+','+(boolValue != null ? "b="+boolValue : "v="+value)+']';
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java	(revision 8846)
@@ -162,11 +162,11 @@
             String val = primitive.get(key);
             IconPrototype p;
-            if ((p = icons.get("n" + key + "=" + val)) != null) {
+            if ((p = icons.get('n' + key + '=' + val)) != null) {
                 icon = update(icon, p, scale, mc);
             }
-            if ((p = icons.get("b" + key + "=" + OsmUtils.getNamedOsmBoolean(val))) != null) {
+            if ((p = icons.get('b' + key + '=' + OsmUtils.getNamedOsmBoolean(val))) != null) {
                 icon = update(icon, p, scale, mc);
             }
-            if ((p = icons.get("x" + key)) != null) {
+            if ((p = icons.get('x' + key)) != null) {
                 icon = update(icon, p, scale, mc);
             }
@@ -194,5 +194,5 @@
             LinePrototype styleLine;
             LinemodPrototype styleLinemod;
-            String idx = "n" + key + "=" + val;
+            String idx = 'n' + key + '=' + val;
             if ((styleArea = areas.get(idx)) != null && (closed || !styleArea.closed) && !isNotArea) {
                 p.area = update(p.area, styleArea, scale, mc);
@@ -209,5 +209,5 @@
                 }
             }
-            idx = "b" + key + "=" + OsmUtils.getNamedOsmBoolean(val);
+            idx = 'b' + key + '=' + OsmUtils.getNamedOsmBoolean(val);
             if ((styleArea = areas.get(idx)) != null && (closed || !styleArea.closed) && !isNotArea) {
                 p.area = update(p.area, styleArea, scale, mc);
@@ -224,5 +224,5 @@
                 }
             }
-            idx = "x" + key;
+            idx = 'x' + key;
             if ((styleArea = areas.get(idx)) != null && (closed || !styleArea.closed) && !isNotArea) {
                 p.area = update(p.area, styleArea, scale, mc);
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java	(revision 8846)
@@ -52,9 +52,9 @@
         Color ret;
         if (i < 0) {
-            ret = Main.pref.getColor("mappaint."+style.getPrefName()+"."+colString, Color.red);
+            ret = Main.pref.getColor("mappaint."+style.getPrefName()+'.'+colString, Color.red);
         } else if (i == 0) {
             ret = ColorHelper.html2color(colString);
         } else {
-            ret = Main.pref.getColor("mappaint."+style.getPrefName()+"."+colString.substring(0, i),
+            ret = Main.pref.getColor("mappaint."+style.getPrefName()+'.'+colString.substring(0, i),
                     ColorHelper.html2color(colString.substring(i)));
         }
@@ -73,5 +73,5 @@
 
     private void error(String message) {
-        String warning = style.getDisplayString() + " (" + rule.cond.key + "=" + rule.cond.value + "): " + message;
+        String warning = style.getDisplayString() + " (" + rule.cond.key + '=' + rule.cond.value + "): " + message;
         Main.warn(warning);
         style.logError(new Exception(warning));
Index: trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 8846)
@@ -16,4 +16,5 @@
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.BorderFactory;
@@ -76,8 +77,8 @@
         private final PluginPreference preference;
         private final PluginDownloadTask task;
-        private final List<PluginInformation> toDownload;
+        private final Set<PluginInformation> toDownload;
 
         private PluginDownloadAfterTask(PluginPreference preference, PluginDownloadTask task,
-                List<PluginInformation> toDownload) {
+                Set<PluginInformation> toDownload) {
             this.preference = preference;
             this.task = task;
@@ -413,5 +414,5 @@
         //
         final PluginPreference preference = getPluginPreference();
-        final List<PluginInformation> toDownload = preference.getPluginsScheduledForUpdateOrDownload();
+        final Set<PluginInformation> toDownload = preference.getPluginsScheduledForUpdateOrDownload();
         final PluginDownloadTask task;
         if (toDownload != null && !toDownload.isEmpty()) {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 8846)
@@ -151,5 +151,5 @@
             }
         };
-        tblActiveSources.putClientProperty("terminateEditOnFocusLost", true);
+        tblActiveSources.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
         tblActiveSources.setSelectionModel(selectionModel);
         tblActiveSources.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java	(revision 8846)
@@ -81,5 +81,5 @@
             if (!sel.getName().endsWith(".xml")) sel = new File(sel.getAbsolutePath()+".xml");
             if (!sel.getName().startsWith(schemaKey)) {
-                sel = new File(sel.getParentFile().getAbsolutePath()+"/"+schemaKey+"_"+sel.getName());
+                sel = new File(sel.getParentFile().getAbsolutePath()+'/'+schemaKey+'_'+sel.getName());
             }
             return sel;
Index: trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 8846)
@@ -119,5 +119,5 @@
             Color color = ColorHelper.html2color(html);
             if (color == null) {
-                Main.warn("Unable to get color from '"+html+"' for color preference '"+value+"'");
+                Main.warn("Unable to get color from '"+html+"' for color preference '"+value+'\'');
             }
             row.add(value);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(revision 8846)
@@ -89,5 +89,5 @@
     protected static String sanitize(String s, ImageryType type) {
         String ret = s;
-        String imageryType = type.getTypeString() + ":";
+        String imageryType = type.getTypeString() + ':';
         if (ret.startsWith(imageryType)) {
             // remove ImageryType from URL
Index: trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 8846)
@@ -21,4 +21,5 @@
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.AbstractAction;
@@ -271,5 +272,5 @@
      * @return the list of plugins waiting for update or download
      */
-    public List<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
+    public Set<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
         return model != null ? model.getPluginsScheduledForUpdateOrDownload() : null;
     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java	(revision 8846)
@@ -165,5 +165,5 @@
 
     /**
-     * Replies the list of plugin informations to display
+     * Replies the list of plugin informations to display.
      *
      * @return the list of plugin informations to display
@@ -173,12 +173,11 @@
     }
 
-
-    /**
-     * Replies the list of plugins waiting for update or download
-     *
-     * @return the list of plugins waiting for update or download
-     */
-    public List<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
-        List<PluginInformation> ret = new ArrayList<>();
+    /**
+     * Replies the set of plugins waiting for update or download.
+     *
+     * @return the set of plugins waiting for update or download
+     */
+    public Set<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
+        Set<PluginInformation> ret = new HashSet<>();
         for (String plugin: pendingDownloads) {
             PluginInformation pi = getPluginInformation(plugin);
Index: trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 8846)
@@ -173,5 +173,5 @@
         String newTitle;
         if (extraText != null) {
-            newTitle = taskTitle + " " + extraText;
+            newTitle = taskTitle + ' ' + extraText;
         } else {
             newTitle = taskTitle;
Index: trunk/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java	(revision 8846)
@@ -7,5 +7,5 @@
 
     public ProgressTaskId(String component, String task) {
-        this.id = component + "." + task;
+        this.id = component + '.' + task;
     }
 
@@ -29,6 +29,4 @@
         ProgressTaskId other = (ProgressTaskId) obj;
         return other.id.equals(id);
-
     }
-
 }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 8846)
@@ -130,5 +130,5 @@
      */
     public String getName() {
-        return group != null ? group.getName() + "/" + getLocaleName() : getLocaleName();
+        return group != null ? group.getName() + '/' + getLocaleName() : getLocaleName();
     }
 
@@ -137,5 +137,5 @@
      */
     public String getRawName() {
-        return group != null ? group.getRawName() + "/" + name : name;
+        return group != null ? group.getRawName() + '/' + name : name;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 8846)
@@ -247,5 +247,5 @@
                 locale_text = getLocaleText(text, text_context, null);
             }
-            p.add(new JLabel(locale_text+":"), GBC.std().insets(0, 0, 10, 0));
+            p.add(new JLabel(locale_text+':'), GBC.std().insets(0, 0, 10, 0));
             p.add(new JLabel(key), GBC.std().insets(0, 0, 10, 0));
             p.add(new JLabel(cstring), types == null ? GBC.eol() : GBC.std().insets(0, 0, 10, 0));
@@ -360,5 +360,5 @@
         @Override
         public String toString() {
-            return getClass().getSimpleName() + " [" + fieldsToString() + "]";
+            return getClass().getSimpleName() + " [" + fieldsToString() + ']';
         }
     }
@@ -583,5 +583,5 @@
             return "KeyedItem [key=" + key + ", text=" + text
                     + ", text_context=" + text_context + ", match=" + match
-                    + "]";
+                    + ']';
         }
     }
@@ -619,5 +619,5 @@
             return "Key [key=" + key + ", value=" + value + ", text=" + text
                     + ", text_context=" + text_context + ", match=" + match
-                    + "]";
+                    + ']';
         }
     }
@@ -646,5 +646,5 @@
             AutoCompletingTextField textField = new AutoCompletingTextField();
             if (alternative_autocomplete_keys != null) {
-                initAutoCompletionField(textField, (key + "," + alternative_autocomplete_keys).split(","));
+                initAutoCompletionField(textField, (key + ',' + alternative_autocomplete_keys).split(","));
             } else {
                 initAutoCompletionField(textField, key);
@@ -754,5 +754,5 @@
                 value = pnl;
             }
-            p.add(new JLabel(locale_text+":"), GBC.std().insets(0, 0, 10, 0));
+            p.add(new JLabel(locale_text+':'), GBC.std().insets(0, 0, 10, 0));
             p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
             return true;
@@ -861,5 +861,5 @@
             for (Check check : checks) {
                 if (Boolean.TRUE.equals(check.matches(tags))) {
-                    return true;
+                    return Boolean.TRUE;
                 }
             }
@@ -869,5 +869,5 @@
         @Override
         public String toString() {
-            return "CheckGroup [columns=" + columns + "]";
+            return "CheckGroup [columns=" + columns + ']';
         }
     }
@@ -981,5 +981,5 @@
                     + (check != null ? "check=" + check + ", " : "")
                     + (initialState != null ? "initialState=" + initialState
-                            + ", " : "") + "def=" + def + "]";
+                            + ", " : "") + "def=" + def + ']';
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java	(revision 8846)
@@ -131,5 +131,5 @@
                     for (KeyPressReleaseListener q: keyListeners) {
                         if (Main.isDebugEnabled()) {
-                            Main.debug(q+" => doKeyPressed("+e+")");
+                            Main.debug(q+" => doKeyPressed("+e+')');
                         }
                         q.doKeyPressed(e);
@@ -144,5 +144,5 @@
                         for (KeyPressReleaseListener q: keyListeners) {
                             if (Main.isDebugEnabled()) {
-                                Main.debug(q+" => doKeyReleased("+e+")");
+                                Main.debug(q+" => doKeyReleased("+e+')');
                             }
                             q.doKeyReleased(e);
Index: trunk/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java	(revision 8846)
@@ -37,5 +37,5 @@
                         f.isItalic() ? "italic" : "normal"
         );
-        rule = "body {" + rule + "}";
+        rule = "body {" + rule + '}';
         rule = MessageFormat.format(
                 "font-family: ''{0}'';font-size: {1,number}pt; font-weight: {2}; font-style: {3}",
@@ -45,5 +45,5 @@
                 f.isItalic() ? "italic" : "normal"
         );
-        rule = "strong {" + rule + "}";
+        rule = "strong {" + rule + '}';
         ss.addRule(rule);
         ss.addRule("a {text-decoration: underline; color: blue}");
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java	(revision 8846)
@@ -99,12 +99,12 @@
         final Font f = UIManager.getFont("Label.font");
         final StyleSheet ss = new StyleSheet();
-        ss.addRule((allBold ? "html" : "strong, b") + " {" + getFontRule(f) + "}");
+        ss.addRule((allBold ? "html" : "strong, b") + " {" + getFontRule(f) + '}');
         ss.addRule("a {text-decoration: underline; color: blue}");
-        ss.addRule("h1 {" + getFontRule(GuiHelper.getTitleFont()) + "}");
+        ss.addRule("h1 {" + getFontRule(GuiHelper.getTitleFont()) + '}');
         ss.addRule("ol {margin-left: 1cm; margin-top: 0.1cm; margin-bottom: 0.2cm; list-style-type: decimal}");
         ss.addRule("ul {margin-left: 1cm; margin-top: 0.1cm; margin-bottom: 0.2cm; list-style-type: disc}");
         if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
             // Fix rendering problem for Khmer script
-            ss.addRule("p {" + getFontRule(UIManager.getFont("Label.font")) + "}");
+            ss.addRule("p {" + getFontRule(UIManager.getFont("Label.font")) + '}');
         }
         kit.setStyleSheet(ss);
Index: trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 8846)
@@ -1158,5 +1158,5 @@
             }
         } else {
-            throwParseException(st, "unrecognized attribute \"" + name + "\"");
+            throwParseException(st, "unrecognized attribute \"" + name + '\"');
         }
     }
@@ -1213,5 +1213,5 @@
                     parseSplit(st, split);
                 } else {
-                    throwParseException(st, "unrecognized node type '" + nodeType + "'");
+                    throwParseException(st, "unrecognized node type '" + nodeType + '\'');
                 }
             }
Index: trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java	(revision 8846)
@@ -48,5 +48,5 @@
         boolean done = false;
         GpxData result = null;
-        String url = "trackpoints?bbox="+b.getMinLon()+","+b.getMinLat()+","+b.getMaxLon()+","+b.getMaxLat()+"&page=";
+        String url = "trackpoints?bbox="+b.getMinLon()+','+b.getMinLat()+','+b.getMaxLon()+','+b.getMaxLat()+"&page=";
         for (int i = 0; !done; ++i) {
             progressMonitor.subTask(tr("Downloading points {0} to {1}...", i * 5000, (i + 1) * 5000));
@@ -123,5 +123,5 @@
      */
     protected String getRequestForBbox(double lon1, double lat1, double lon2, double lat2) {
-        return "map?bbox=" + lon1 + "," + lat1 + "," + lon2 + "," + lat2;
+        return "map?bbox=" + lon1 + ',' + lat1 + ',' + lon2 + ',' + lat2;
     }
 
@@ -190,5 +190,5 @@
         CheckParameterUtil.ensureThat(noteLimit <= 10000, "Requested note limit is over API hard limit of 10000.");
         CheckParameterUtil.ensureThat(daysClosed >= -1, "Requested note limit is less than -1.");
-        String url = "notes?limit=" + noteLimit + "&closed=" + daysClosed + "&bbox=" + lon1 + "," + lat1 + "," + lon2 + "," + lat2;
+        String url = "notes?limit=" + noteLimit + "&closed=" + daysClosed + "&bbox=" + lon1 + ',' + lat1 + ',' + lon2 + ',' + lat2;
         try {
             InputStream is = getInputStream(url, progressMonitor.createSubTaskMonitor(1, false));
Index: trunk/src/org/openstreetmap/josm/io/CachedFile.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/CachedFile.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/CachedFile.java	(revision 8846)
@@ -289,5 +289,5 @@
             while (entries.hasMoreElements()) {
                 ZipEntry entry = entries.nextElement();
-                if (entry.getName().endsWith("." + extension)) {
+                if (entry.getName().endsWith('.' + extension)) {
                     /* choose any file with correct extension. When more than
                         one file, prefer the one which matches namepart */
@@ -415,5 +415,5 @@
             if (ifModifiedSince != null && con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
                 if (Main.isDebugEnabled()) {
-                    Main.debug("304 Not Modified ("+urlStr+")");
+                    Main.debug("304 Not Modified ("+urlStr+')');
                 }
                 if (localFile == null)
Index: trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 8846)
@@ -45,4 +45,18 @@
     private static final String GPL_WARNING = "<html><font color='red' size='-2'>"
         + tr("Note: GPL is not compatible with the OSM license. Do not upload GPL licensed tracks.") + "</html>";
+
+    private static final String[] LICENSES = {
+            "Creative Commons By-SA",
+            "Open Database License (ODbL)",
+            "public domain",
+            "GNU Lesser Public License (LGPL)",
+            "BSD License (MIT/X11)"};
+
+    private static final String[] URLS = {
+            "https://creativecommons.org/licenses/by-sa/3.0",
+            "http://opendatacommons.org/licenses/odbl/1.0",
+            "public domain",
+            "https://www.gnu.org/copyleft/lesser.html",
+            "http://www.opensource.org/licenses/bsd-license.php"};
 
     /**
@@ -292,12 +306,6 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                final String[] licenses = {
-                        "Creative Commons By-SA",
-                        "Open Database License (ODbL)",
-                        "public domain",
-                        "GNU Lesser Public License (LGPL)",
-                        "BSD License (MIT/X11)"};
-                JList<String> l = new JList<>(licenses);
-                l.setVisibleRowCount(licenses.length);
+                JList<String> l = new JList<>(LICENSES);
+                l.setVisibleRowCount(LICENSES.length);
                 l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
                 int answer = JOptionPane.showConfirmDialog(
@@ -310,10 +318,4 @@
                 if (answer != JOptionPane.OK_OPTION || l.getSelectedIndex() == -1)
                     return;
-                final String[] urls = {
-                        "https://creativecommons.org/licenses/by-sa/3.0",
-                        "http://opendatacommons.org/licenses/odbl/1.0",
-                        "public domain",
-                        "https://www.gnu.org/copyleft/lesser.html",
-                        "http://www.opensource.org/licenses/bsd-license.php"};
                 String license = "";
                 for (int i : l.getSelectedIndices()) {
@@ -322,5 +324,5 @@
                         break;
                     }
-                    license += license.isEmpty() ? urls[i] : ", "+urls[i];
+                    license += license.isEmpty() ? URLS[i] : ", "+URLS[i];
                 }
                 copyright.setText(license);
Index: trunk/src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 8846)
@@ -178,5 +178,5 @@
                     break;
                 case "email":
-                    data.put(META_AUTHOR_EMAIL, atts.getValue("id") + "@" + atts.getValue("domain"));
+                    data.put(META_AUTHOR_EMAIL, atts.getValue("id") + '@' + atts.getValue("domain"));
                 }
                 break;
@@ -549,5 +549,5 @@
                 if (e instanceof SAXParseException) {
                     SAXParseException spe = (SAXParseException) e;
-                    message += " " + tr("(at line {0}, column {1})", spe.getLineNumber(), spe.getColumnNumber());
+                    message += ' ' + tr("(at line {0}, column {1})", spe.getLineNumber(), spe.getColumnNumber());
                 }
                 Main.warn(message);
Index: trunk/src/org/openstreetmap/josm/io/GpxWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 8846)
@@ -135,5 +135,5 @@
                 String[] tmp = data.getString(META_AUTHOR_EMAIL).split("@");
                 if (tmp.length == 2) {
-                    inline("email", "id=\"" + tmp[0] + "\" domain=\""+tmp[1]+"\"");
+                    inline("email", "id=\"" + tmp[0] + "\" domain=\""+tmp[1]+'\"');
                 }
             }
@@ -146,5 +146,5 @@
         if (attr.containsKey(META_COPYRIGHT_LICENSE)
                 || attr.containsKey(META_COPYRIGHT_YEAR)) {
-            openAtt("copyright", "author=\""+ data.get(META_COPYRIGHT_AUTHOR) +"\"");
+            openAtt("copyright", "author=\""+ data.get(META_COPYRIGHT_AUTHOR) +'\"');
             if (attr.containsKey(META_COPYRIGHT_YEAR)) {
                 simpleTag("year", (String) data.get(META_COPYRIGHT_YEAR));
@@ -171,5 +171,5 @@
         if (bounds != null) {
             String b = "minlat=\"" + bounds.getMinLat() + "\" minlon=\"" + bounds.getMinLon() +
-            "\" maxlat=\"" + bounds.getMaxLat() + "\" maxlon=\"" + bounds.getMaxLon() + "\"";
+            "\" maxlat=\"" + bounds.getMaxLat() + "\" maxlon=\"" + bounds.getMaxLon() + '\"';
             inline("bounds", b);
         }
@@ -222,20 +222,20 @@
 
     private void open(String tag) {
-        out.print(indent + "<" + tag + ">");
+        out.print(indent + '<' + tag + '>');
         indent += "  ";
     }
 
     private void openAtt(String tag, String attributes) {
-        out.println(indent + "<" + tag + " " + attributes + ">");
+        out.println(indent + '<' + tag + ' ' + attributes + '>');
         indent += "  ";
     }
 
     private void inline(String tag, String attributes) {
-        out.println(indent + "<" + tag + " " + attributes + "/>");
+        out.println(indent + '<' + tag + ' ' + attributes + "/>");
     }
 
     private void close(String tag) {
         indent = indent.substring(2);
-        out.print(indent + "</" + tag + ">");
+        out.print(indent + "</" + tag + '>');
     }
 
@@ -253,5 +253,5 @@
             open(tag);
             out.print(encode(content));
-            out.println("</" + tag + ">");
+            out.println("</" + tag + '>');
             indent = indent.substring(2);
         }
@@ -263,5 +263,5 @@
     private void gpxLink(GpxLink link) {
         if (link != null) {
-            openAtt("link", "href=\"" + link.uri + "\"");
+            openAtt("link", "href=\"" + link.uri + '\"');
             simpleTag("text", link.text);
             simpleTag("type", link.type);
@@ -290,5 +290,5 @@
         if (pnt != null) {
             LatLon c = pnt.getCoor();
-            String coordAttr = "lat=\"" + c.lat() + "\" lon=\"" + c.lon() + "\"";
+            String coordAttr = "lat=\"" + c.lat() + "\" lon=\"" + c.lon() + '\"';
             if (pnt.attr.isEmpty()) {
                 inline(type, coordAttr);
Index: trunk/src/org/openstreetmap/josm/io/JpgImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/JpgImporter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/JpgImporter.java	(revision 8846)
@@ -36,5 +36,5 @@
      */
     public static final ExtensionFileFilter FILE_FILTER_WITH_FOLDERS = new ExtensionFileFilter(
-            "jpg,jpeg", "jpg", tr("Image Files") + " (*.jpg, "+ tr("folder")+")");
+            "jpg,jpeg", "jpg", tr("Image Files") + " (*.jpg, "+ tr("folder")+')');
 
     /**
Index: trunk/src/org/openstreetmap/josm/io/MessageNotifier.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 8846)
@@ -71,5 +71,5 @@
                             panel.add(new JLabel(trn("You have {0} unread message.", "You have {0} unread messages.", unread, unread)),
                                     GBC.eol());
-                            panel.add(new UrlLabel(Main.getBaseUserUrl() + "/" + userInfo.getDisplayName() + "/inbox",
+                            panel.add(new UrlLabel(Main.getBaseUserUrl() + '/' + userInfo.getDisplayName() + "/inbox",
                                     tr("Click here to see your inbox.")), GBC.eol());
                             panel.setOpaque(false);
@@ -97,5 +97,5 @@
         } else if (!isRunning() && interval > 0 && isUserEnoughIdentified()) {
             task = EXECUTOR.scheduleAtFixedRate(WORKER, 0, interval * 60, TimeUnit.SECONDS);
-            Main.info("Message notifier active (checks every "+interval+" minute"+(interval > 1 ? "s" : "")+")");
+            Main.info("Message notifier active (checks every "+interval+" minute"+(interval > 1 ? "s" : "")+')');
         }
     }
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 8846)
@@ -351,5 +351,5 @@
         // Run the fetchers
         for (int i = 0; i < jobs.size() && !isCanceled(); i++) {
-            progressMonitor.subTask(msg + "... " + progressMonitor.getTicks() + "/" + progressMonitor.getTicksCount());
+            progressMonitor.subTask(msg + "... " + progressMonitor.getTicks() + '/' + progressMonitor.getTicksCount());
             try {
                 FetchResult result = ecs.take().get();
Index: trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 8846)
@@ -378,5 +378,5 @@
             initialize(monitor);
             // normal mode (0.6 and up) returns new object version.
-            ret = sendRequest("PUT", OsmPrimitiveType.from(osm).getAPIName()+"/" + osm.getId(), toXml(osm, true), monitor);
+            ret = sendRequest("PUT", OsmPrimitiveType.from(osm).getAPIName()+'/' + osm.getId(), toXml(osm, true), monitor);
             osm.setOsmId(osm.getId(), Integer.parseInt(ret.trim()));
             osm.setChangesetId(getChangeset().getId());
@@ -623,5 +623,5 @@
             try {
                 url = new URL(new URL(getBaseUrl()), urlSuffix);
-                Main.info(requestMethod + " " + url + "... ");
+                Main.info(requestMethod + ' ' + url + "... ");
                 Main.debug(requestBody);
                 // fix #5369, see http://www.tikalk.com/java/forums/httpurlconnection-disable-keep-alive
Index: trunk/src/org/openstreetmap/josm/io/OsmConnection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 8846)
@@ -95,5 +95,5 @@
             String username = response.getUsername() == null ? "" : response.getUsername();
             String password = response.getPassword() == null ? "" : String.valueOf(response.getPassword());
-            token = username + ":" + password;
+            token = username + ':' + password;
             try {
                 ByteBuffer bytes = encoder.encode(CharBuffer.wrap(token));
Index: trunk/src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 8846)
@@ -86,5 +86,5 @@
             // a truncated file.  That can destroy lots of work.
             if (file.exists()) {
-                tmpFile = new File(file.getPath() + "~");
+                tmpFile = new File(file.getPath() + '~');
                 Utils.copyFile(file, tmpFile);
             }
Index: trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 8846)
@@ -40,5 +40,5 @@
             if (locator == null)
                 return "";
-            return "(" + locator.getLineNumber() + "," + locator.getColumnNumber() + ")";
+            return "(" + locator.getLineNumber() + ',' + locator.getColumnNumber() + ')';
         }
 
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 8846)
@@ -562,5 +562,5 @@
             if (getLocation() == null)
                 return msg;
-            msg += " " + tr("(at line {0}, column {1})", getLocation().getLineNumber(), getLocation().getColumnNumber());
+            msg += ' ' + tr("(at line {0}, column {1})", getLocation().getLineNumber(), getLocation().getColumnNumber());
             int offset = getLocation().getCharacterOffset();
             if (offset > -1) {
Index: trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 8846)
@@ -152,5 +152,5 @@
             try {
                 if (reason != null && !reason.isEmpty()) {
-                    Main.info("GET " + url + " (" + reason + ")");
+                    Main.info("GET " + url + " (" + reason + ')');
                 } else {
                     Main.info("GET " + url);
Index: trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 8846)
@@ -71,7 +71,7 @@
         long minutes_left = ms_left / MSECS_PER_MINUTE;
         long seconds_left = (ms_left / MSECS_PER_SECOND) % SECONDS_PER_MINUTE;
-        String time_left_str = Long.toString(minutes_left) + ":";
+        String time_left_str = Long.toString(minutes_left) + ':';
         if (seconds_left < 10) {
-            time_left_str += "0";
+            time_left_str += '0';
         }
         return time_left_str + Long.toString(seconds_left);
Index: trunk/src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 8846)
@@ -185,5 +185,5 @@
             if (n.getCoor() != null) {
                 out.print(" lat='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lat())+
-                          "' lon='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lon())+"'");
+                          "' lon='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lon())+'\'');
             }
             addTags(n, "node", true);
@@ -226,23 +226,23 @@
     public void visit(Changeset cs) {
         out.print("  <changeset ");
-        out.print(" id='"+cs.getId()+"'");
+        out.print(" id='"+cs.getId()+'\'');
         if (cs.getUser() != null) {
-            out.print(" user='"+cs.getUser().getName() +"'");
-            out.print(" uid='"+cs.getUser().getId() +"'");
+            out.print(" user='"+cs.getUser().getName() +'\'');
+            out.print(" uid='"+cs.getUser().getId() +'\'');
         }
         if (cs.getCreatedAt() != null) {
-            out.print(" created_at='"+DateUtils.fromDate(cs.getCreatedAt()) +"'");
+            out.print(" created_at='"+DateUtils.fromDate(cs.getCreatedAt()) +'\'');
         }
         if (cs.getClosedAt() != null) {
-            out.print(" closed_at='"+DateUtils.fromDate(cs.getClosedAt()) +"'");
-        }
-        out.print(" open='"+ (cs.isOpen() ? "true" : "false") +"'");
+            out.print(" closed_at='"+DateUtils.fromDate(cs.getClosedAt()) +'\'');
+        }
+        out.print(" open='"+ (cs.isOpen() ? "true" : "false") +'\'');
         if (cs.getMin() != null) {
-            out.print(" min_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
-            out.print(" min_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
+            out.print(" min_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
+            out.print(" min_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
         }
         if (cs.getMax() != null) {
-            out.print(" max_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
-            out.print(" max_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
+            out.print(" max_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
+            out.print(" max_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
         }
         out.println(">");
@@ -268,9 +268,9 @@
                         "' v='"+XmlWriter.encode(e.getValue())+ "' />");
             }
-            out.println("  </" + tagname + ">");
+            out.println("  </" + tagname + '>');
         } else if (tagOpen) {
             out.println(" />");
         } else {
-            out.println("  </" + tagname + ">");
+            out.println("  </" + tagname + '>');
         }
     }
@@ -283,5 +283,5 @@
         out.print("  <"+tagname);
         if (osm.getUniqueId() != 0) {
-            out.print(" id='"+ osm.getUniqueId()+"'");
+            out.print(" id='"+ osm.getUniqueId()+'\'');
         } else
             throw new IllegalStateException(tr("Unexpected id 0 for osm primitive found"));
@@ -295,29 +295,29 @@
                 }
                 if (action != null) {
-                    out.print(" action='"+action+"'");
+                    out.print(" action='"+action+'\'');
                 }
             }
             if (!osm.isTimestampEmpty()) {
-                out.print(" timestamp='"+DateUtils.fromTimestamp(osm.getRawTimestamp())+"'");
+                out.print(" timestamp='"+DateUtils.fromTimestamp(osm.getRawTimestamp())+'\'');
             }
             // user and visible added with 0.4 API
             if (osm.getUser() != null) {
                 if (osm.getUser().isLocalUser()) {
-                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+"'");
+                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+'\'');
                 } else if (osm.getUser().isOsmUser()) {
                     // uid added with 0.6
-                    out.print(" uid='"+ osm.getUser().getId()+"'");
-                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+"'");
+                    out.print(" uid='"+ osm.getUser().getId()+'\'');
+                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+'\'');
                 }
             }
-            out.print(" visible='"+osm.isVisible()+"'");
+            out.print(" visible='"+osm.isVisible()+'\'');
         }
         if (osm.getVersion() != 0) {
-            out.print(" version='"+osm.getVersion()+"'");
+            out.print(" version='"+osm.getVersion()+'\'');
         }
         if (this.changeset != null && this.changeset.getId() != 0) {
-            out.print(" changeset='"+this.changeset.getId()+"'");
+            out.print(" changeset='"+this.changeset.getId()+'\'');
         } else if (osm.getChangesetId() > 0 && !osm.isNew()) {
-            out.print(" changeset='"+osm.getChangesetId()+"'");
+            out.print(" changeset='"+osm.getChangesetId()+'\'');
         }
     }
Index: trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 8846)
@@ -50,10 +50,10 @@
             String realQuery = completeOverpassQuery(overpassQuery);
             return "interpreter?data=" + Utils.encodeUrl(realQuery)
-                    + "&bbox=" + lon1 + "," + lat1 + "," + lon2 + "," + lat2;
+                    + "&bbox=" + lon1 + ',' + lat1 + ',' + lon2 + ',' + lat2;
         }
     }
 
     private String completeOverpassQuery(String query) {
-        int firstColon = query.indexOf(";");
+        int firstColon = query.indexOf(';');
         if (firstColon == -1) {
             return "[bbox];" + query;
Index: trunk/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java	(revision 8846)
@@ -55,5 +55,5 @@
             if (response == null || response.isCanceled())
                 return null;
-            credentialsTried.put(getRequestorType(), true);
+            credentialsTried.put(getRequestorType(), Boolean.TRUE);
             return new PasswordAuthentication(response.getUsername(), response.getPassword());
         } catch (CredentialsAgentException e) {
Index: trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 8846)
@@ -149,7 +149,7 @@
                     try {
                         bounds = new ImageryBounds(
-                                atts.getValue("min-lat") + "," +
-                                        atts.getValue("min-lon") + "," +
-                                        atts.getValue("max-lat") + "," +
+                                atts.getValue("min-lat") + ',' +
+                                        atts.getValue("min-lon") + ',' +
+                                        atts.getValue("max-lat") + ',' +
                                         atts.getValue("max-lon"), ",");
                     } catch (IllegalArgumentException e) {
Index: trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 8846)
@@ -121,7 +121,7 @@
                 final String getCapabilitiesQuery = "VERSION=1.1.1&SERVICE=WMS&REQUEST=GetCapabilities";
                 if (getCapabilitiesUrl.getQuery() == null) {
-                    getCapabilitiesUrl = new URL(serviceUrlStr + "?" + getCapabilitiesQuery);
+                    getCapabilitiesUrl = new URL(serviceUrlStr + '?' + getCapabilitiesQuery);
                 } else if (!getCapabilitiesUrl.getQuery().isEmpty() && !getCapabilitiesUrl.getQuery().endsWith("&")) {
-                    getCapabilitiesUrl = new URL(serviceUrlStr + "&" + getCapabilitiesQuery);
+                    getCapabilitiesUrl = new URL(serviceUrlStr + '&' + getCapabilitiesQuery);
                 } else {
                     getCapabilitiesUrl = new URL(serviceUrlStr + getCapabilitiesQuery);
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java	(revision 8846)
@@ -109,5 +109,5 @@
             command = command.substring(1);
         }
-        String commandWithSlash = "/" + command;
+        String commandWithSlash = '/' + command;
         if (handlers.get(commandWithSlash) != null) {
             Main.info("RemoteControl: ignoring duplicate command " + command
@@ -116,5 +116,5 @@
             if (!silent) {
                 Main.info("RemoteControl: adding command \"" +
-                    command + "\" (handled by " + handler.getSimpleName() + ")");
+                    command + "\" (handled by " + handler.getSimpleName() + ')');
             }
             handlers.put(commandWithSlash, handler);
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 8846)
@@ -81,5 +81,5 @@
 
         // Parse the arguments
-        Main.info("Adding node at (" + lat + ", " + lon + ")");
+        Main.info("Adding node at (" + lat + ", " + lon + ')');
 
         // Create a new node
@@ -118,5 +118,5 @@
             lon = Double.parseDouble(args.get("lon"));
         } catch (NumberFormatException e) {
-            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+")", e);
+            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
         }
         if (!Main.main.hasEditLayer()) {
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 8846)
@@ -106,5 +106,5 @@
                 allCoordinates.add(new LatLon(lat, lon));
             } catch (NumberFormatException e) {
-                throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+")", e);
+                throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
             }
         }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java	(revision 8846)
@@ -33,5 +33,5 @@
                    buf.append(", ");
                }
-               String info = RequestProcessor.getHandlerInfoAsJSON("/"+s);
+               String info = RequestProcessor.getHandlerInfoAsJSON('/'+s);
                if (info != null) {
                    buf.append(info);
@@ -48,5 +48,5 @@
         contentType = "application/json";
         if (args.containsKey("jsonp")) {
-            content = args.get("jsonp") + " && " + args.get("jsonp") + "(" + content + ")";
+            content = args.get("jsonp") + " && " + args.get("jsonp") + '(' + content + ')';
         }
     }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 8846)
@@ -274,5 +274,5 @@
             maxlon = LatLon.roundToOsmPrecision(Double.parseDouble(args.get("right")));
         } catch (NumberFormatException e) {
-            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+")", e);
+            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
         }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 8846)
@@ -224,5 +224,5 @@
             if (value == null || value.isEmpty()) {
                 error = true;
-                Main.warn("'" + myCommand + "' remote control request must have '" + key + "' parameter");
+                Main.warn('\'' + myCommand + "' remote control request must have '" + key + "' parameter");
                 missingKeys.add(key);
             }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java	(revision 8846)
@@ -23,5 +23,5 @@
         contentType = "application/json";
         if (args.containsKey("jsonp")) {
-            content = args.get("jsonp") + " && " + args.get("jsonp") + "(" + content + ")";
+            content = args.get("jsonp") + " && " + args.get("jsonp") + "(" + content + ')';
         }
     }
Index: trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java	(revision 8846)
@@ -106,5 +106,5 @@
         List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
         if (!deps.isEmpty()) {
-            Layer layer = deps.iterator().next().getLayer();
+            Layer layer = deps.get(0).getLayer();
             if (layer instanceof GpxLayer) {
                 gpxLayer = (GpxLayer) layer;
Index: trunk/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java	(revision 8846)
@@ -49,13 +49,13 @@
             AbstractTileSourceLayer tsLayer = (AbstractTileSourceLayer) layer;
             if (attributes.containsKey("automatic-downloading")) {
-                tsLayer.autoLoad = Boolean.valueOf(attributes.get("automatic-downloading"));
+                tsLayer.autoLoad = Boolean.parseBoolean(attributes.get("automatic-downloading"));
             }
 
             if (attributes.containsKey("automatically-change-resolution")) {
-                tsLayer.autoZoom = Boolean.valueOf(attributes.get("automatically-change-resolution"));
+                tsLayer.autoZoom = Boolean.parseBoolean(attributes.get("automatically-change-resolution"));
             }
 
             if (attributes.containsKey("show-errors")) {
-                tsLayer.showErrors = Boolean.valueOf(attributes.get("show-errors"));
+                tsLayer.showErrors = Boolean.parseBoolean(attributes.get("show-errors"));
             }
         }
Index: trunk/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java	(revision 8846)
@@ -49,5 +49,5 @@
                 List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
                 if (!deps.isEmpty()) {
-                    Layer layer = deps.iterator().next().getLayer();
+                    Layer layer = deps.get(0).getLayer();
                     if (layer instanceof GpxLayer) {
                         gpxLayer = (GpxLayer) layer;
Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 8846)
@@ -1390,5 +1390,5 @@
             pl.remove(pi.name);
             pl.add(pi.name + " (" + (pi.localversion != null && !pi.localversion.isEmpty()
-                    ? pi.localversion : "unknown") + ")");
+                    ? pi.localversion : "unknown") + ')');
         }
         Collections.sort(pl);
Index: trunk/src/org/openstreetmap/josm/plugins/PluginListParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginListParser.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginListParser.java	(revision 8846)
@@ -70,5 +70,5 @@
                     while (line.length() > 70) {
                         manifest.append(line.substring(0, 70)).append('\n');
-                        line = " " + line.substring(70);
+                        line = ' ' + line.substring(70);
                     }
                     manifest.append(line).append('\n');
Index: trunk/src/org/openstreetmap/josm/tools/ColorHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ColorHelper.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/ColorHelper.java	(revision 8846)
@@ -63,5 +63,5 @@
         if (col == null)
             return null;
-        String code = "#"+int2hex(col.getRed())+int2hex(col.getGreen())+int2hex(col.getBlue());
+        String code = '#'+int2hex(col.getRed())+int2hex(col.getGreen())+int2hex(col.getBlue());
         if (withAlpha) {
             int alpha = col.getAlpha();
Index: trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java	(revision 8846)
@@ -267,5 +267,5 @@
         if (header != null) {
             if (body != null && !header.equals(body)) {
-                msg = header + " (" + body + ")";
+                msg = header + " (" + body + ')';
             } else {
                 msg = header;
Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 8846)
@@ -309,5 +309,5 @@
         }
         if (strings != null) {
-            String trans = strings.get(ctx == null ? text : "_:"+ctx+"\n"+text);
+            String trans = strings.get(ctx == null ? text : "_:"+ctx+'\n'+text);
             if (trans != null)
                 return trans;
@@ -315,5 +315,5 @@
         if (pstrings != null) {
             i = pluralEval(1);
-            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+"\n"+text);
+            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+'\n'+text);
             if (trans != null && trans.length > i)
                 return trans[i];
@@ -339,5 +339,5 @@
         if (pstrings != null) {
             i = pluralEval(num);
-            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+"\n"+text);
+            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+'\n'+text);
             if (trans != null && trans.length > i)
                 return trans[i];
@@ -353,5 +353,5 @@
 
     private static URL getTranslationFile(String lang) {
-        return Main.class.getResource("/data/"+lang.replace("@", "-")+".lang");
+        return Main.class.getResource("/data/"+lang.replace('@', '-')+".lang");
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 8846)
@@ -720,5 +720,5 @@
                 subdir = "";
             } else if (!subdir.isEmpty() && !subdir.endsWith("/")) {
-                subdir += "/";
+                subdir += '/';
             }
             String[] extensions;
@@ -742,7 +742,7 @@
                     /* cache separately */
                     if (dirs != null && !dirs.isEmpty()) {
-                        cacheName = "id:" + id + ":" + fullName;
+                        cacheName = "id:" + id + ':' + fullName;
                         if (archive != null) {
-                            cacheName += ":" + archive.getName();
+                            cacheName += ':' + archive.getName();
                         }
                     }
@@ -838,5 +838,5 @@
                     bytes = Utils.decodeUrl(data).getBytes(StandardCharsets.UTF_8);
                 } catch (IllegalArgumentException ex) {
-                    Main.warn("Unable to decode URL data part: "+ex.getMessage() + " (" + data + ")");
+                    Main.warn("Unable to decode URL data part: "+ex.getMessage() + " (" + data + ')');
                     return null;
                 }
@@ -898,5 +898,5 @@
             } else {
                 final String fn_md5 = Utils.md5Hex(fn);
-                url = b + fn_md5.substring(0, 1) + "/" + fn_md5.substring(0, 2) + "/" + fn;
+                url = b + fn_md5.substring(0, 1) + '/' + fn_md5.substring(0, 2) + "/" + fn;
             }
             result = getIfAvailableHttp(url, type);
@@ -922,5 +922,5 @@
                 inArchiveDir = "";
             } else if (!inArchiveDir.isEmpty()) {
-                inArchiveDir += "/";
+                inArchiveDir += '/';
             }
             String entryName = inArchiveDir + fullName;
@@ -1142,5 +1142,5 @@
         }
         if (GraphicsEnvironment.isHeadless()) {
-            Main.warn("Cursors are not available in headless mode. Returning null for '"+name+"'");
+            Main.warn("Cursors are not available in headless mode. Returning null for '"+name+'\'');
             return null;
         }
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 8846)
@@ -54,7 +54,7 @@
         } else if (code.matches(".+@.+")) {
           return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1, 2)
-          + "-" + code.substring(3, 4).toUpperCase(Locale.ENGLISH) + code.substring(4) + ":";
-        }
-        return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1) + ":";
+          + '-' + code.substring(3, 4).toUpperCase(Locale.ENGLISH) + code.substring(4) + ':';
+        }
+        return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1) + ':';
     }
 
@@ -156,8 +156,8 @@
      */
     public static Locale getLocale(String localeName) {
-        int country = localeName.indexOf("_");
-        int variant = localeName.indexOf("@");
+        int country = localeName.indexOf('_');
+        int variant = localeName.indexOf('@');
         if (variant < 0 && country >= 0)
-            variant = localeName.indexOf("_", country+1);
+            variant = localeName.indexOf('_', country+1);
         Locale l;
         if (variant > 0 && country > 0) {
@@ -198,6 +198,6 @@
     public static String getLanguageCodeXML() {
         String code = getJOSMLocaleCode();
-        code = code.replace("@", "-");
-        return code+".";
+        code = code.replace('@', '-');
+        return code+'.';
     }
 
@@ -210,6 +210,6 @@
     public static String getLanguageCodeManifest() {
         String code = getJOSMLocaleCode();
-        code = code.replace("@", "-");
-        return code+"_";
+        code = code.replace('@', '-');
+        return code+'_';
     }
 
@@ -239,9 +239,9 @@
         if (v != null && !v.isEmpty()) {
             if (c != null)
-                list.add(lang+"_"+c+"@"+v);
-            list.add(lang+"@"+v);
+                list.add(lang+'_'+c+'@'+v);
+            list.add(lang+'@'+v);
         }
         if (c != null)
-            list.add(lang+"_"+c);
+            list.add(lang+'_'+c);
         list.add(lang);
         return list;
Index: trunk/src/org/openstreetmap/josm/tools/MultiMap.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/MultiMap.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/MultiMap.java	(revision 8846)
@@ -232,7 +232,7 @@
         List<String> entries = new ArrayList<>(map.size());
         for (Entry<A, Set<B>> entry : map.entrySet()) {
-            entries.add(entry.getKey() + "->{" + Utils.join(",", entry.getValue()) + "}");
-        }
-        return "(" + Utils.join(",", entries) + ")";
+            entries.add(entry.getKey() + "->{" + Utils.join(",", entry.getValue()) + '}');
+        }
+        return '(' + Utils.join(",", entries) + ')';
     }
 }
Index: trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 8846)
@@ -209,6 +209,6 @@
 
     private String formatMenuText(KeyStroke keyStroke, String index, String description) {
-        String shortcutText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers()) + "+"
-                + KeyEvent.getKeyText(keyStroke.getKeyCode()) + "," + index;
+        String shortcutText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers()) + '+'
+                + KeyEvent.getKeyText(keyStroke.getKeyCode()) + ',' + index;
 
         return "<html><i>" + shortcutText + "</i>&nbsp;&nbsp;&nbsp;&nbsp;" + description;
Index: trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 8846)
@@ -118,5 +118,5 @@
         if (map.containsKey(key))
             return Double.parseDouble(map.get(key));
-        return Double.parseDouble(map.get("m"+key));
+        return Double.parseDouble(map.get('m'+key));
     }
 
@@ -296,5 +296,5 @@
         double lon = Math.round(dlon * decimals);
         lon /= decimals;
-        return Main.getOSMWebsite() + "/#map="+zoom+"/"+lat+"/"+lon;
+        return Main.getOSMWebsite() + "/#map="+zoom+'/'+lat+'/'+lon;
     }
 }
Index: trunk/src/org/openstreetmap/josm/tools/Pair.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Pair.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/Pair.java	(revision 8846)
@@ -64,5 +64,5 @@
     @Override
     public String toString() {
-        return "<"+a+","+b+">";
+        return "<"+a+','+b+'>';
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 8846)
@@ -295,9 +295,9 @@
         result += name;
         if (sc != null && !sc.getKeyText().isEmpty()) {
-            result += " ";
+            result += ' ';
             if (canHtml) {
                 result += "<font size='-2'>";
             }
-            result += "("+sc.getKeyText()+")";
+            result += '('+sc.getKeyText()+')';
             if (canHtml) {
                 result += "</font>";
@@ -323,5 +323,5 @@
     @Override
     public String getOSDescription() {
-        return System.getProperty("os.name") + " " + System.getProperty("os.version");
+        return System.getProperty("os.name") + ' ' + System.getProperty("os.version");
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 8846)
@@ -153,7 +153,7 @@
         result += name;
         if (sc != null && !sc.getKeyText().isEmpty()) {
-            result += " ";
+            result += ' ';
             result += "<font size='-2'>";
-            result += "("+sc.getKeyText()+")";
+            result += '('+sc.getKeyText()+')';
             result += "</font>";
         }
@@ -210,5 +210,5 @@
                     String version = Utils.execOutput(Arrays.asList(args));
                     if (version != null && !version.contains("not installed")) {
-                        return packageName + ":" + version;
+                        return packageName + ':' + version;
                     }
                 }
@@ -336,5 +336,5 @@
         @Override public String toString() {
             return "ReleaseInfo [path=" + path + ", descriptionField=" + descriptionField +
-                    ", idField=" + idField + ", releaseField=" + releaseField + "]";
+                    ", idField=" + idField + ", releaseField=" + releaseField + ']';
         }
 
@@ -372,5 +372,5 @@
                         // If no description has been found, try to rebuild it with "id" + "release" (i.e. "name" + "version")
                         if (result == null && id != null && release != null) {
-                            result = id + " " + release;
+                            result = id + ' ' + release;
                         }
                     } catch (IOException e) {
@@ -533,5 +533,5 @@
                         Main.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
                     }
-                    w.append(key + "=" + value + "\n");
+                    w.append(key + '=' + value + '\n');
                 }
                 w.append('\n');
@@ -540,5 +540,5 @@
                         continue;
                     }
-                    String key = "filename." + entry.name.replace(" ", "_");
+                    String key = "filename." + entry.name.replace(' ', '_');
                     String value = entry.file;
                     String prevValue = props.getProperty(key);
@@ -546,12 +546,12 @@
                         Main.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
                     }
-                    w.append(key + "=" + value + "\n");
+                    w.append(key + '=' + value + '\n');
                 }
                 w.append('\n');
                 String fallback = props.getProperty("sequence.fallback");
                 if (fallback != null) {
-                    w.append("sequence.fallback=" + fallback + "," + Utils.join(",", allCharSubsets) + "\n");
+                    w.append("sequence.fallback=" + fallback + ',' + Utils.join(",", allCharSubsets) + '\n');
                 } else {
-                    w.append("sequence.fallback=" + Utils.join(",", allCharSubsets) + "\n");
+                    w.append("sequence.fallback=" + Utils.join(",", allCharSubsets) + '\n');
                 }
             }
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 8846)
@@ -187,5 +187,5 @@
     @Override
     public String getOSDescription() {
-        return Utils.strip(System.getProperty("os.name")) + " " +
+        return Utils.strip(System.getProperty("os.name")) + ' ' +
                 ((System.getenv("ProgramFiles(x86)") == null) ? "32" : "64") + "-Bit";
     }
Index: trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 8846)
@@ -240,5 +240,5 @@
         String modifText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers());
         if ("".equals(modifText)) return KeyEvent.getKeyText(keyStroke.getKeyCode());
-        return modifText + "+" + KeyEvent.getKeyText(keyStroke.getKeyCode());
+        return modifText + '+' + KeyEvent.getKeyText(keyStroke.getKeyCode());
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/TextTagParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/TextTagParser.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/TextTagParser.java	(revision 8846)
@@ -258,5 +258,5 @@
             String value = entry.getValue();
             if (key.length() > MAX_KEY_LENGTH) {
-                r = warning(tr("Key is too long (max {0} characters):", MAX_KEY_LENGTH), key+"="+value, "tags.paste.keytoolong");
+                r = warning(tr("Key is too long (max {0} characters):", MAX_KEY_LENGTH), key+'='+value, "tags.paste.keytoolong");
                 if (r == 2 || r == 3) return false; if (r == 4) return true;
             }
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 8846)
@@ -1208,5 +1208,5 @@
             final List<String> lines = Arrays.asList(s.split("\\n"));
             if (lines.size() > maxLines) {
-                return join("\n", lines.subList(0, maxLines - 1)) + "\n" + "...";
+                return join("\n", lines.subList(0, maxLines - 1)) + "\n...";
             } else {
                 return s;
@@ -1341,5 +1341,5 @@
             String old = System.setProperty(key, value);
             if (!key.toLowerCase(Locale.ENGLISH).contains("password")) {
-                Main.debug("System property '" + key + "' set to '" + value + "'. Old value was '" + old + "'");
+                Main.debug("System property '" + key + "' set to '" + value + "'. Old value was '" + old + '\'');
             } else {
                 Main.debug("System property '" + key + "' changed.");
@@ -1397,5 +1397,5 @@
         String name = filename.toLowerCase(Locale.ENGLISH);
         for (String ext : extensions) {
-            if (name.endsWith("." + ext.toLowerCase(Locale.ENGLISH)))
+            if (name.endsWith('.' + ext.toLowerCase(Locale.ENGLISH)))
                 return true;
         }
Index: trunk/src/org/openstreetmap/josm/tools/WikiReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/WikiReader.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/WikiReader.java	(revision 8846)
@@ -144,7 +144,7 @@
                 b += line.replaceAll("<img ", "<img border=\"0\" ")
                          .replaceAll("<span class=\"icon\">.</span>", "")
-                         .replaceAll("href=\"/", "href=\"" + baseurl + "/")
+                         .replaceAll("href=\"/", "href=\"" + baseurl + '/')
                          .replaceAll(" />", ">")
-                         + "\n";
+                         + '\n';
             } else if (transl && line.contains("</div>")) {
                 transl = false;
Index: trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java	(revision 8846)
@@ -474,5 +474,5 @@
     @Override
     public String toString() {
-        return "WindowGeometry{topLeft="+topLeft+",extent="+extent+"}";
+        return "WindowGeometry{topLeft="+topLeft+",extent="+extent+'}';
     }
 }
Index: trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 8846)
@@ -133,5 +133,5 @@
             if ("class".equals(fieldName) || "default".equals(fieldName) || "throw".equals(fieldName) ||
                     "new".equals(fieldName) || "null".equals(fieldName)) {
-                fieldName += "_";
+                fieldName += '_';
             }
             try {
Index: trunk/src/org/openstreetmap/josm/tools/XmlParsingException.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/XmlParsingException.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/XmlParsingException.java	(revision 8846)
@@ -61,5 +61,5 @@
             msg = getClass().getName();
         }
-        return msg + " " + tr("(at line {0}, column {1})", lineNumber, columnNumber);
+        return msg + ' ' + tr("(at line {0}, column {1})", lineNumber, columnNumber);
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java	(revision 8846)
@@ -26,5 +26,5 @@
     @Override
     public String toString() {
-        return condition.toString() + " '" + text + "'";
+        return condition.toString() + " '" + text + '\'';
     }
 }
Index: trunk/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java	(revision 8846)
@@ -3,5 +3,6 @@
 
 import java.util.Arrays;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
 
 public class Tokenizer {
@@ -36,5 +37,5 @@
         @Override
         public String toString() {
-            return type + (text != null ? " " + text : "");
+            return type + (text != null ? ' ' + text : "");
         }
     }
@@ -42,5 +43,5 @@
     public enum TokenType { CONDITION_START, VARIABLE_START, CONTEXT_SWITCH_START, END, PIPE, APOSTROPHE, TEXT, EOF }
 
-    private final List<Character> specialCharaters = Arrays.asList(new Character[] {'$', '?', '{', '}', '|', '\'', '!'});
+    private final Set<Character> specialCharaters = new HashSet<>(Arrays.asList(new Character[] {'$', '?', '{', '}', '|', '\'', '!'}));
 
     private final String template;
Index: trunk/src/org/openstreetmap/josm/tools/template_engine/Variable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/template_engine/Variable.java	(revision 8840)
+++ trunk/src/org/openstreetmap/josm/tools/template_engine/Variable.java	(revision 8846)
@@ -56,5 +56,5 @@
     @Override
     public String toString() {
-        return "{" + variableName + "}";
+        return '{' + variableName + '}';
     }
 
