Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 10300)
@@ -367,4 +367,8 @@
             return rhs;
         }
+
+        protected static String parenthesis(Match m) {
+            return '(' + m.toString() + ')';
+        }
     }
 
@@ -413,5 +417,5 @@
         @Override
         public String toString() {
-            return "!" + match;
+            return '!' + match.toString();
         }
 
@@ -473,6 +477,6 @@
         @Override
         public String toString() {
-            return (lhs instanceof AbstractBinaryMatch && !(lhs instanceof And) ? ("(" + lhs + ')') : lhs) + " && "
-                    + (rhs instanceof AbstractBinaryMatch && !(rhs instanceof And) ? ("(" + rhs + ')') : rhs);
+            return (lhs instanceof AbstractBinaryMatch && !(lhs instanceof And) ? parenthesis(lhs) : lhs) + " && "
+                 + (rhs instanceof AbstractBinaryMatch && !(rhs instanceof And) ? parenthesis(rhs) : rhs);
         }
     }
@@ -503,6 +507,6 @@
         @Override
         public String toString() {
-            return (lhs instanceof AbstractBinaryMatch && !(lhs instanceof Or) ? ("(" + lhs + ')') : lhs) + " || "
-                    + (rhs instanceof AbstractBinaryMatch && !(rhs instanceof Or) ? ("(" + rhs + ')') : rhs);
+            return (lhs instanceof AbstractBinaryMatch && !(lhs instanceof Or) ? parenthesis(lhs) : lhs) + " || "
+                 + (rhs instanceof AbstractBinaryMatch && !(rhs instanceof Or) ? parenthesis(rhs) : rhs);
         }
     }
@@ -533,6 +537,6 @@
         @Override
         public String toString() {
-            return (lhs instanceof AbstractBinaryMatch && !(lhs instanceof Xor) ? ("(" + lhs + ')') : lhs) + " ^ "
-                    + (rhs instanceof AbstractBinaryMatch && !(rhs instanceof Xor) ? ("(" + rhs + ')') : rhs);
+            return (lhs instanceof AbstractBinaryMatch && !(lhs instanceof Xor) ? parenthesis(lhs) : lhs) + " ^ "
+                 + (rhs instanceof AbstractBinaryMatch && !(rhs instanceof Xor) ? parenthesis(rhs) : rhs);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 10300)
@@ -171,5 +171,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 ? "" : ('_' + Integer.toString(index)));
             File result = new File(autosaveDir, filename + '.' + Main.pref.get("autosave.extension", "osm"));
             try {
Index: /trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java	(revision 10300)
@@ -106,5 +106,5 @@
     @Override
     public String toString() {
-        return "ProjectionBounds["+minEast+","+minNorth+","+maxEast+","+maxNorth+']';
+        return "ProjectionBounds["+minEast+','+minNorth+','+maxEast+','+maxNorth+']';
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/Version.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/Version.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/Version.java	(revision 10300)
@@ -191,5 +191,5 @@
             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();
Index: /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 10300)
@@ -863,5 +863,5 @@
     public String getExtendedUrl() {
         return imageryType.getTypeString() + (defaultMaxZoom != 0
-            ? "["+(defaultMinZoom != 0 ? Integer.toString(defaultMinZoom) + ',' : "")+defaultMaxZoom+"]" : "") + ':' + url;
+            ? ('['+(defaultMinZoom != 0 ? (Integer.toString(defaultMinZoom) + ',') : "")+defaultMaxZoom+"]") : "") + ':' + url;
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/notes/Note.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/notes/Note.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/notes/Note.java	(revision 10300)
@@ -148,5 +148,5 @@
     @Override
     public String toString() {
-        return tr("Note") + " " + id + ": " + getFirstComment();
+        return tr("Note") + ' ' + id + ": " + getFirstComment();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java	(revision 10300)
@@ -57,5 +57,5 @@
     @Override
     public String toString() {
-        return type + " " + id;
+        return type.toString() + ' ' + id;
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 10300)
@@ -1815,5 +1815,5 @@
                 case '\uFF0E': // fullwidth full stop
                 case '\uFF61': // halfwidth ideographic full stop
-                    return ascii + "."; // restore the missing stop
+                    return ascii + '.'; // restore the missing stop
                 default:
                     return ascii;
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 10300)
@@ -104,7 +104,7 @@
             // <restriction-value> @ <condition>[;<restriction-value> @ <condition>]
             final List<ConditionalValue> r = new ArrayList<>();
-            final Pattern part = Pattern.compile("([^@\\p{Space}][^@]*?)"
-                    + "\\s*@\\s*" + "(\\([^)\\p{Space}][^)]+?\\)|[^();\\p{Space}][^();]*?)\\s*");
-            final Matcher m = Pattern.compile("(" + part + ")(;\\s*" + part + ")*").matcher(value);
+            final String part = Pattern.compile("([^@\\p{Space}][^@]*?)"
+                    + "\\s*@\\s*" + "(\\([^)\\p{Space}][^)]+?\\)|[^();\\p{Space}][^();]*?)\\s*").toString();
+            final Matcher m = Pattern.compile('(' + part + ")(;\\s*" + part + ")*").matcher(value);
             if (!m.matches()) {
                 throw new ConditionalParsingException(tr("Does not match pattern ''restriction value @ condition''"));
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10300)
@@ -258,7 +258,6 @@
         @Override
         public String toString() {
-            return "LayerChangeAdapter [wrapped=" + wrapped + "]";
-        }
-
+            return "LayerChangeAdapter [wrapped=" + wrapped + ']';
+        }
     }
 
@@ -314,7 +313,6 @@
         @Override
         public String toString() {
-            return "EditLayerChangeAdapter [wrapped=" + wrapped + "]";
-        }
-
+            return "EditLayerChangeAdapter [wrapped=" + wrapped + ']';
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 10300)
@@ -114,5 +114,5 @@
                 numParentRelations, numParentRelations);
         @I18n.QuirkyPluralString
-        final String msg = "<html>" + msg1 + " " + msg2 + "</html>";
+        final String msg = "<html>" + msg1 + ' ' + msg2 + "</html>";
         htmlPanel.getEditorPane().setText(msg);
         invalidate();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 10300)
@@ -72,5 +72,5 @@
         p.setVisible(false);
 
-        mSpltPane.add(p, "L"+i);
+        mSpltPane.add(p, 'L'+Integer.toString(i));
         panels.add(p);
 
@@ -257,5 +257,5 @@
                 ch.add(new Divider());
             }
-            Leaf l = new Leaf("L"+i);
+            Leaf l = new Leaf('L'+Integer.toString(i));
             l.setWeight(1.0 / numPanels);
             ch.add(l);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 10300)
@@ -200,5 +200,5 @@
         tfLatLon.setText(ll.latToString(CoordinateFormat.getDefaultFormat()) + ' ' + ll.lonToString(CoordinateFormat.getDefaultFormat()));
         EastNorth en = Main.getProjection().latlon2eastNorth(ll);
-        tfEastNorth.setText(en.east()+" "+en.north());
+        tfEastNorth.setText(Double.toString(en.east()) + ' ' + Double.toString(en.north()));
         setOkEnabled(true);
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 10300)
@@ -688,5 +688,5 @@
             p.add(new JScrollPane(txtErrors), GBC.std().fill());
             for (T t : items) {
-                txtErrors.append(t + "\n");
+                txtErrors.append(t.toString() + '\n');
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 10300)
@@ -299,5 +299,5 @@
         @Override
         public String toString() {
-            return "OpacitySlider [getRealValue()=" + getRealValue() + "]";
+            return "OpacitySlider [getRealValue()=" + getRealValue() + ']';
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 10300)
@@ -812,11 +812,11 @@
             Shortcut sc = Shortcut.findShortcut(KeyEvent.VK_1, commandDownMask);
             if (sc != null) {
-                lines.add(sc.getKeyText() + " " + tr("to apply first suggestion"));
-            }
-            lines.add(KeyEvent.getKeyModifiersText(KeyEvent.SHIFT_MASK)+'+'+KeyEvent.getKeyText(KeyEvent.VK_ENTER) + " "
+                lines.add(sc.getKeyText() + ' ' + tr("to apply first suggestion"));
+            }
+            lines.add(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);
             if (sc != null) {
-                lines.add(sc.getKeyText() + " " + tr("to add first suggestion without closing the dialog"));
+                lines.add(sc.getKeyText() + ' ' + tr("to add first suggestion without closing the dialog"));
             }
             final JLabel helpLabel = new JLabel("<html>" + Utils.join("<br>", lines) + "</html>");
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 10300)
@@ -1625,5 +1625,5 @@
             return null;
         if (Main.isTraceEnabled()) {
-            Main.trace("Clicked on tile: " + clickedTile.getXtile() + " " + clickedTile.getYtile() +
+            Main.trace("Clicked on tile: " + clickedTile.getXtile() + ' ' + clickedTile.getYtile() +
                 " currentZoomLevel: " + currentZoomLevel);
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 10300)
@@ -304,4 +304,9 @@
             return process(to);
         }
+
+        @Override
+        public String toString() {
+            return "GammaImageProcessor [gamma=" + gamma + ']';
+        }
     }
 
@@ -387,5 +392,5 @@
         @Override
         public String toString() {
-            return "SharpenImageProcessor [sharpenLevel=" + sharpenLevel + "]";
+            return "SharpenImageProcessor [sharpenLevel=" + sharpenLevel + ']';
         }
     }
@@ -437,5 +442,5 @@
         @Override
         public String toString() {
-            return "ColorfulImageProcessor [colorfulness=" + colorfulness + "]";
+            return "ColorfulImageProcessor [colorfulness=" + colorfulness + ']';
         }
     }
@@ -470,5 +475,5 @@
             int type = src.getType();
             if (type != dest.getType()) {
-                Main.trace("Cannot apply color filter: Src / Dest differ in type (" + type + "/" + dest.getType() + ")");
+                Main.trace("Cannot apply color filter: Src / Dest differ in type (" + type + '/' + dest.getType() + ')');
                 return src;
             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 10300)
@@ -31,5 +31,4 @@
          */
         public PaintableInvalidationEvent(MapViewPaintable paintable) {
-            super();
             this.paintable = paintable;
         }
@@ -45,5 +44,5 @@
         @Override
         public String toString() {
-            return "LayerInvalidationEvent [layer=" + paintable + "]";
+            return "LayerInvalidationEvent [layer=" + paintable + ']';
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java	(revision 10300)
@@ -240,5 +240,5 @@
             StringBuilder stringBuilder = new StringBuilder();
             for (Scale s: this.scales) {
-                stringBuilder.append(s + "\n");
+                stringBuilder.append(s.toString() + '\n');
             }
             return stringBuilder.toString();
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10300)
@@ -804,5 +804,5 @@
             final GpxLayer gpxLayer = new GpxLayer(gpxData, tr("Converted from: {0}", getName()));
             if (getAssociatedFile() != null) {
-                final String filename = getAssociatedFile().getName().replaceAll(Pattern.quote(".gpx.osm") + "$", "") + ".gpx";
+                String filename = getAssociatedFile().getName().replaceAll(Pattern.quote(".gpx.osm") + '$', "") + ".gpx";
                 gpxLayer.setAssociatedFile(new File(getAssociatedFile().getParentFile(), filename));
             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java	(revision 10300)
@@ -95,5 +95,5 @@
 
     private BufferedImage loadThumb(ImageEntry entry) {
-        final String cacheIdent = entry.getFile()+":"+maxSize;
+        final String cacheIdent = entry.getFile().toString()+':'+maxSize;
 
         if (!cacheOff && cache != null) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 10300)
@@ -222,17 +222,18 @@
     @Override
     public String getToolTipText() {
-        return data.size()+" "+trn("marker", "markers", data.size());
+        return Integer.toString(data.size())+' '+trn("marker", "markers", data.size());
     }
 
     @Override
     public void mergeFrom(Layer from) {
-        MarkerLayer layer = (MarkerLayer) from;
-        data.addAll(layer.data);
-        Collections.sort(data, new Comparator<Marker>() {
-            @Override
-            public int compare(Marker o1, Marker o2) {
-                return Double.compare(o1.time, o2.time);
-            }
-        });
+        if (from instanceof MarkerLayer) {
+            data.addAll(((MarkerLayer) from).data);
+            Collections.sort(data, new Comparator<Marker>() {
+                @Override
+                public int compare(Marker o1, Marker o2) {
+                    return Double.compare(o1.time, o2.time);
+                }
+            });
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 10300)
@@ -130,5 +130,5 @@
             } catch (NumberFormatException e) {
                 if (Main.isDebugEnabled()) {
-                    Main.debug("'"+o+"' cannot be converted to float");
+                    Main.debug('\'' + (String) o + "' cannot be converted to float");
                 }
             }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 10300)
@@ -743,4 +743,8 @@
         private final Expression e;
 
+        /**
+         * Constructs a new {@code ExpressionFactory}
+         * @param e expression
+         */
         public ExpressionCondition(Expression e) {
             this.e = e;
@@ -755,5 +759,5 @@
         @Override
         public String toString() {
-            return "[" + e + ']';
+            return '[' + e.toString() + ']';
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java	(revision 10300)
@@ -9,8 +9,13 @@
 /**
  * Simple literal value, that does not depend on other expressions.
+ * @since 5705
  */
 public class LiteralExpression implements Expression {
     private final Object literal;
 
+    /**
+     * Constructs a new {@code LiteralExpression}.
+     * @param literal literal
+     */
     public LiteralExpression(Object literal) {
         CheckParameterUtil.ensureParameterNotNull(literal);
@@ -28,5 +33,5 @@
             return Arrays.toString((float[]) literal);
         }
-        return "<" + literal + '>';
+        return '<' + literal.toString() + '>';
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 10300)
@@ -435,5 +435,5 @@
         @Override
         public String toString() {
-            return left + " " + (ChildOrParentSelectorType.PARENT.equals(type) ? '<' : '>') + link + ' ' + right;
+            return left.toString() + ' ' + (ChildOrParentSelectorType.PARENT.equals(type) ? '<' : '>') + link + ' ' + right;
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java	(revision 10300)
@@ -269,5 +269,5 @@
         @Override
         public String toString() {
-            return "{" + getClass().getSimpleName() +'}';
+            return '{' + getClass().getSimpleName() + '}';
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10300)
@@ -530,5 +530,5 @@
     @Override
     public String toString() {
-        return (types == null ? "" : types) + " " + name;
+        return (types == null ? "" : types.toString()) + ' ' + name;
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 10300)
@@ -168,5 +168,5 @@
         @Override
         public String toString() {
-            return classification + " " + preset;
+            return Integer.toString(classification) + ' ' + preset;
         }
     }
Index: /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 10300)
@@ -241,5 +241,5 @@
         CheckParameterUtil.ensureParameterNotNull(changesetIds, "changesetIds");
         if (changesetIds.size() > MAX_CHANGESETS_NUMBER) {
-            Main.warn("Changeset query built with more than " + MAX_CHANGESETS_NUMBER + " changeset ids (" + changesetIds.size() + ")");
+            Main.warn("Changeset query built with more than " + MAX_CHANGESETS_NUMBER + " changeset ids (" + changesetIds.size() + ')');
         }
         this.changesetIds = changesetIds;
Index: /trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java	(revision 10300)
@@ -1,10 +1,10 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
+
+import java.util.Set;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.tools.Utils;
-
-import java.util.Set;
 
 /**
@@ -20,8 +20,8 @@
             @Override
             public Object apply(Long x) {
-                return type.getAPIName() + "(" + x + ");>;";
+                return type.getAPIName() + '(' + x + ");>;";
             }
         };
-        final String query = "(" + Utils.join("", Utils.transform(idPackage, toOverpassExpression)) + ");out meta;";
+        final String query = '(' + Utils.join("", Utils.transform(idPackage, toOverpassExpression)) + ");out meta;";
         return "interpreter?data=" + Utils.encodeUrl(query);
     }
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java	(revision 10300)
@@ -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/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 10300)
@@ -1229,5 +1229,5 @@
             return true;
         } else if (jar != null) {
-            Main.warn("Invalid jar file ''"+jar+"'' (exists: "+jar.exists()+", canRead: "+jar.canRead()+")");
+            Main.warn("Invalid jar file ''"+jar+"'' (exists: "+jar.exists()+", canRead: "+jar.canRead()+')');
         }
         return false;
Index: /trunk/src/org/openstreetmap/josm/tools/HttpClient.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/HttpClient.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/tools/HttpClient.java	(revision 10300)
@@ -122,8 +122,8 @@
                 final boolean hasReason = reasonForRequest != null && !reasonForRequest.isEmpty();
                 Main.info("{0} {1}{2} -> {3}{4}",
-                        requestMethod, url, hasReason ? " (" + reasonForRequest + ")" : "",
+                        requestMethod, url, hasReason ? (" (" + reasonForRequest + ')') : "",
                         connection.getResponseCode(),
                         connection.getContentLengthLong() > 0
-                                ? " (" + Utils.getSizeString(connection.getContentLengthLong(), Locale.getDefault()) + ")"
+                                ? (" (" + Utils.getSizeString(connection.getContentLengthLong(), Locale.getDefault()) + ')')
                                 : ""
                 );
Index: /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10300)
@@ -928,5 +928,5 @@
             } else {
                 final String fnMD5 = Utils.md5Hex(fn);
-                url = b + fnMD5.substring(0, 1) + '/' + fnMD5.substring(0, 2) + "/" + fn;
+                url = b + fnMD5.substring(0, 1) + '/' + fnMD5.substring(0, 2) + '/' + fn;
             }
             result = getIfAvailableHttp(url, type);
Index: /trunk/src/org/openstreetmap/josm/tools/Pair.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Pair.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/tools/Pair.java	(revision 10300)
@@ -42,5 +42,5 @@
         Pair<?, ?> pair = (Pair<?, ?>) other;
         return Objects.equals(a, pair.a) &&
-                Objects.equals(b, pair.b);
+               Objects.equals(b, pair.b);
     }
 
@@ -62,5 +62,5 @@
     @Override
     public String toString() {
-        return "<"+a+','+b+'>';
+        return '<'+a.toString()+','+b.toString()+'>';
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/bugreport/BugReport.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/tools/bugreport/BugReport.java	(revision 10300)
@@ -70,5 +70,5 @@
             if (className.equals(element.getClassName()) && "getCallingMethod".equals(element.getMethodName())) {
                 StackTraceElement toReturn = stackTrace[i + offset];
-                return toReturn.getClassName().replaceFirst(".*\\.", "") + "#" + toReturn.getMethodName();
+                return toReturn.getClassName().replaceFirst(".*\\.", "") + '#' + toReturn.getMethodName();
             }
         }
Index: /trunk/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java	(revision 10299)
+++ /trunk/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java	(revision 10300)
@@ -124,5 +124,5 @@
 
     private static String niceThreadName(Thread thread) {
-        String name = "Thread: " + thread.getName() + " (" + thread.getId() + ")";
+        String name = "Thread: " + thread.getName() + " (" + thread.getId() + ')';
         ThreadGroup threadGroup = thread.getThreadGroup();
         if (threadGroup != null) {
@@ -221,9 +221,9 @@
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
-        builder.append("CrashReportedException [on thread ");
-        builder.append(caughtOnThread);
-        builder.append("]");
-        return builder.toString();
+        return new StringBuilder(48)
+            .append("CrashReportedException [on thread ")
+            .append(caughtOnThread)
+            .append(']')
+            .toString();
     }
 
@@ -235,5 +235,4 @@
             this.key = key;
             this.value = value;
-
         }
 
@@ -273,5 +272,5 @@
          */
         public void printSection(PrintWriter out) {
-            out.println(sectionName + ":");
+            out.println(sectionName + ':');
             if (entries.isEmpty()) {
                 out.println("No data collected.");
Index: /trunk/test/unit/org/openstreetmap/josm/data/ProjectionBoundsTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/ProjectionBoundsTest.java	(revision 10300)
+++ /trunk/test/unit/org/openstreetmap/josm/data/ProjectionBoundsTest.java	(revision 10300)
@@ -0,0 +1,20 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Unit tests for class {@link ProjectionBounds}.
+ */
+public class ProjectionBoundsTest {
+
+    /**
+     * Unit test of {@link ProjectionBounds#toString}
+     */
+    @Test
+    public void testToString() {
+        assertEquals("ProjectionBounds[1.0,2.0,3.0,4.0]", new ProjectionBounds(1, 2, 3, 4).toString());
+    }
+}
Index: /trunk/test/unit/org/openstreetmap/josm/data/VersionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/VersionTest.java	(revision 10300)
+++ /trunk/test/unit/org/openstreetmap/josm/data/VersionTest.java	(revision 10300)
@@ -0,0 +1,35 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+
+/**
+ * Unit tests for class {@link Version}.
+ */
+public class VersionTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link Version#getAgentString}
+     */
+    @Test
+    public void testGetAgentString() {
+        String v = Version.getInstance().getAgentString(false);
+        assertTrue(v.startsWith("JOSM/1.5 ("));
+        assertTrue(v.endsWith(" en)"));
+        v = Version.getInstance().getAgentString(true);
+        assertTrue(v.startsWith("JOSM/1.5 ("));
+        assertTrue(v.contains(" en) "));
+    }
+}
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java	(revision 10299)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java	(revision 10300)
@@ -48,4 +48,5 @@
             action.updateValues();
             assertEquals(1.0, action.opacitySlider.getRealValue(), 1e-15);
+            assertEquals("OpacitySlider [getRealValue()=1.0]", action.opacitySlider.toString());
 
             action.opacitySlider.setRealValue(.5);
@@ -53,4 +54,5 @@
 
             assertEquals(0.5, action.opacitySlider.getRealValue(), 1e-15);
+            assertEquals("OpacitySlider [getRealValue()=0.5]", action.opacitySlider.toString());
 
             action.setVisibleFlag(false);
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java	(revision 10300)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java	(revision 10300)
@@ -0,0 +1,35 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+
+/**
+ * Unit tests of {@link ImageryLayer} class.
+ */
+public class ImageryLayerTest {
+
+    /**
+     * Setup tests
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init(true);
+    }
+
+    /**
+     * Unit test of {@link ImageryLayer.ColorfulImageProcessor#toString}
+     *          and {@link ImageryLayer.GammaImageProcessor#toString()}.
+     *          and {@link ImageryLayer.SharpenImageProcessor#toString()}.
+     */
+    @Test
+    public void testToString() {
+        ImageryLayer layer = TMSLayerTest.createTmsLayer();
+        assertEquals("ColorfulImageProcessor [colorfulness=1.0]", layer.collorfulnessImageProcessor.toString());
+        assertEquals("GammaImageProcessor [gamma=1.0]", layer.gammaImageProcessor.toString());
+        assertEquals("SharpenImageProcessor [sharpenLevel=1.0]", layer.sharpenImageProcessor.toString());
+    }
+}
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/MapViewPaintableTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/MapViewPaintableTest.java	(revision 10300)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/MapViewPaintableTest.java	(revision 10300)
@@ -0,0 +1,31 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.gui.layer.MapViewPaintable.PaintableInvalidationEvent;
+
+/**
+ * Unit tests of {@link MapViewPaintable} class.
+ */
+public class MapViewPaintableTest {
+
+    /**
+     * Setup tests
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link MapViewPaintable.PaintableInvalidationEvent#toString}
+     */
+    @Test
+    public void testToString() {
+        assertEquals("LayerInvalidationEvent [layer=null]", new PaintableInvalidationEvent(null).toString());
+    }
+}
