Index: src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 6124)
+++ src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(working copy)
@@ -144,8 +144,6 @@
     /** List of sources for spellcheck data */
     protected JList sourcesList;
 
-    protected static final Entities entities = new Entities();
-
     /**
      * Constructor
      */
@@ -411,7 +409,7 @@
                         tr(s, key), MessageFormat.format(s, key), INVALID_SPACE, p) );
                 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) );
                 withErrors.put(p, "HTML");
@@ -721,7 +719,7 @@
                 } else if (key.startsWith(" ") || key.endsWith(" ")) {
                     commands.add(new ChangePropertyKeyCommand(Collections.singleton(p), key, key.trim()));
                 } else {
-                    String evalue = entities.unescape(value);
+                    String evalue = Entities.unescape(value);
                     if (!evalue.equals(value)) {
                         commands.add(new ChangePropertyCommand(Collections.singleton(p), key, evalue));
                     } else {
Index: src/org/openstreetmap/josm/data/validation/util/Entities.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/util/Entities.java	(revision 6124)
+++ src/org/openstreetmap/josm/data/validation/util/Entities.java	(working copy)
@@ -334,9 +334,15 @@
         {"euro", "8364"}, // -- euro sign, U+20AC NEW -->
     };
 
-    private static Map<String, String> mapNameToValue = null;
+    private static final Map<String, Integer> MAP_NAME_TO_VALUE = new HashMap<String, Integer>();
 
-    public String unescape(String str) {
+    static {
+        for (String[] pair : ARRAY) {
+            MAP_NAME_TO_VALUE.put(pair[0], Integer.parseInt(pair[1]));
+        }
+    }
+
+    public static String unescape(String str) {
         int firstAmp = str.indexOf('&');
         if (firstAmp < 0)
             return str;
@@ -384,14 +390,8 @@
                             }
                         }
                     } else { // escaped value content is an entity name
-                        if(mapNameToValue == null)
-                        {
-                            mapNameToValue = new HashMap<String, String>();
-                            for (String[] pair : ARRAY)
-                                mapNameToValue.put(pair[0], pair[1]);
-                        }
-                        String value = mapNameToValue.get(entityContent);
-                        entityValue = (value == null ? -1 : Integer.parseInt(value));
+                        final Integer value = MAP_NAME_TO_VALUE.get(entityContent);
+                        if (value != null) entityValue = value;
                     }
                 }
 
