Index: /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 8848)
@@ -296,10 +296,10 @@
         @Override
         public String toString() {
-            String s = "ImageryPreferenceEntry [name=" + name;
+            StringBuilder s = new StringBuilder("ImageryPreferenceEntry [name=").append(name);
             if (id != null) {
-                s += " id=" + id;
-            }
-            s += ']';
-            return s;
+                s.append(" id=").append(id);
+            }
+            s.append(']');
+            return s.toString();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 8848)
@@ -131,6 +131,4 @@
     protected EditableList sourcesList;
 
-    protected static final Entities entities = new Entities();
-
     private static final List<String> DEFAULT_SOURCES = Arrays.asList(/*DATA_FILE, */IGNORE_FILE, SPELL_FILE);
 
@@ -371,5 +369,5 @@
                 withErrors.put(p, "SPACE");
             }
-            if (checkValues && value != null && !value.equals(entities.unescape(value)) && !withErrors.contains(p, "HTML")) {
+            if (checkValues && value != null && !value.equals(Entities.unescape(value)) && !withErrors.contains(p, "HTML")) {
                 errors.add(new TestError(this, Severity.OTHER, tr("Property values contain HTML entity"),
                         tr(s, key), MessageFormat.format(s, key), INVALID_HTML, p));
@@ -620,5 +618,5 @@
                         commands.add(new ChangePropertyKeyCommand(p, key, Tag.removeWhiteSpaces(key)));
                     } else {
-                        String evalue = entities.unescape(value);
+                        String evalue = Entities.unescape(value);
                         if (!evalue.equals(value)) {
                             commands.add(new ChangePropertyCommand(p, key, evalue));
Index: /trunk/src/org/openstreetmap/josm/data/validation/util/Entities.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/util/Entities.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/data/validation/util/Entities.java	(revision 8848)
@@ -31,5 +31,5 @@
  * @see <a href="http://www.w3.org/TR/html401/charset.html#code-position">HTML 4.01 Code positions</a>
  */
-public class Entities {
+public final class Entities {
     private static final String[][] ARRAY = {
         /* BASIC */
@@ -336,9 +336,13 @@
     private static volatile Map<String, String> mapNameToValue;
 
-    public String unescape(String str) {
+    private Entities() {
+        // Private constructor for utilities classes
+    }
+
+    public static String unescape(String str) {
         int firstAmp = str.indexOf('&');
         if (firstAmp < 0)
             return str;
-        String res = str.substring(0, firstAmp);
+        StringBuilder res = new StringBuilder(str.substring(0, firstAmp));
         int len = str.length();
         for (int i = firstAmp; i < len; i++) {
@@ -348,5 +352,5 @@
                 int semiColonIdx = str.indexOf(';', nextIdx);
                 if (semiColonIdx == -1) {
-                    res += c;
+                    res.append(c);
                     continue;
                 }
@@ -354,5 +358,5 @@
                 if (amphersandIdx != -1 && amphersandIdx < semiColonIdx) {
                     // Then the text looks like &...&...;
-                    res += c;
+                    res.append(c);
                     continue;
                 }
@@ -394,14 +398,14 @@
 
                 if (entityValue == -1) {
-                    res += '&' + entityContent + ';';
+                    res.append('&').append(entityContent).append(';');
                 } else {
-                    res += (char) entityValue;
+                    res.append((char) entityValue);
                 }
                 i = semiColonIdx; // move index up to the semi-colon
             } else {
-                res += c;
+                res.append(c);
             }
         }
-        return res;
+        return res.toString();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/FileDrop.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/FileDrop.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/gui/FileDrop.java	(revision 8848)
@@ -155,5 +155,5 @@
 
     // BEGIN 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-    private static final String ZERO_CHAR_STRING = "" + (char) 0;
+    private static final String ZERO_CHAR_STRING = Character.toString((char) 0);
 
     private static File[] createFileArray(BufferedReader bReader) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 8848)
@@ -96,17 +96,15 @@
                 });
             }
-            String names = null;
+            StringBuilder names = new StringBuilder();
             for (File file : sel) {
-                if (names == null) {
-                    names = " (";
+                if (names.length() == 0) {
+                    names.append(" (");
                 } else {
-                    names += ", ";
-                }
-                names += file.getName();
-            }
-            if (names != null) {
-                names += ')';
-            } else {
-                names = "";
+                    names.append(", ");
+                }
+                names.append(file.getName());
+            }
+            if (names.length() > 0) {
+                names.append(')');
             }
             MarkerLayer ml = new MarkerLayer(new GpxData(),
Index: /trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 8848)
@@ -71,9 +71,9 @@
         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) + ':';
+        StringBuilder time_left_str = new StringBuilder().append(minutes_left).append(':');
         if (seconds_left < 10) {
-            time_left_str += '0';
-        }
-        return time_left_str + Long.toString(seconds_left);
+            time_left_str.append('0');
+        }
+        return time_left_str.append(seconds_left).toString();
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 8848)
@@ -289,23 +289,23 @@
             canHtml = false;
         }
-        String result = "";
+        StringBuilder result = new StringBuilder();
         if (canHtml) {
-            result += "<html>";
-        }
-        result += name;
+            result.append("<html>");
+        }
+        result.append(name);
         if (sc != null && !sc.getKeyText().isEmpty()) {
-            result += ' ';
+            result.append(' ');
             if (canHtml) {
-                result += "<font size='-2'>";
-            }
-            result += '('+sc.getKeyText()+')';
+                result.append("<font size='-2'>");
+            }
+            result.append('(').append(sc.getKeyText()).append(')');
             if (canHtml) {
-                result += "</font>";
+                result.append("</font>");
             }
         }
         if (canHtml) {
-            result += "&nbsp;</html>";
-        }
-        return result;
+            result.append("&nbsp;</html>");
+        }
+        return result.toString();
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 8847)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 8848)
@@ -149,14 +149,13 @@
     @Override
     public String makeTooltip(String name, Shortcut sc) {
-        String result = "";
-        result += "<html>";
-        result += name;
+        StringBuilder result = new StringBuilder();
+        result.append("<html>").append(name);
         if (sc != null && !sc.getKeyText().isEmpty()) {
-            result += ' ';
-            result += "<font size='-2'>";
-            result += '('+sc.getKeyText()+')';
-            result += "</font>";
-        }
-        return result + "&nbsp;</html>";
+            result.append(' ')
+                  .append("<font size='-2'>")
+                  .append('(').append(sc.getKeyText()).append(')')
+                  .append("</font>");
+        }
+        return result.append("&nbsp;</html>").toString();
     }
 
