Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 14289)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 14290)
@@ -210,5 +210,5 @@
     public void setIcon(final String iconName) {
         this.iconName = iconName;
-        if (!TaggingPresetReader.isLoadIcons()) {
+        if (iconName == null || !TaggingPresetReader.isLoadIcons()) {
             return;
         }
Index: /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 14289)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 14290)
@@ -41,4 +41,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.TreeSet;
@@ -277,5 +278,5 @@
     protected String subdir;
     /** image file name */
-    protected String name;
+    protected final String name;
     /** archive file to take image from */
     protected File archive;
@@ -327,8 +328,9 @@
      * @param name the name of the image. If it does not end with '.png' or '.svg',
      * both extensions are tried.
+     * @throws NullPointerException if name is null
      */
     public ImageProvider(String subdir, String name) {
         this.subdir = subdir;
-        this.name = name;
+        this.name = Objects.requireNonNull(name, "name");
     }
 
@@ -337,7 +339,8 @@
      * @param name the name of the image. If it does not end with '.png' or '.svg',
      * both extensions are tried.
+     * @throws NullPointerException if name is null
      */
     public ImageProvider(String name) {
-        this.name = name;
+        this.name = Objects.requireNonNull(name, "name");
     }
 
@@ -863,6 +866,4 @@
             // This method is called from different thread and modifying HashMap concurrently can result
             // for example in loops in map entries (ie freeze when such entry is retrieved)
-            if (name == null)
-                return null;
 
             String prefix = isDisabled ? "dis:" : "";
@@ -2089,5 +2090,5 @@
         return ("ImageProvider ["
                 + (dirs != null && !dirs.isEmpty() ? "dirs=" + dirs + ", " : "") + (id != null ? "id=" + id + ", " : "")
-                + (subdir != null && !subdir.isEmpty() ? "subdir=" + subdir + ", " : "") + (name != null ? "name=" + name + ", " : "")
+                + (subdir != null && !subdir.isEmpty() ? "subdir=" + subdir + ", " : "") + "name=" + name + ", "
                 + (archive != null ? "archive=" + archive + ", " : "")
                 + (inArchiveDir != null && !inArchiveDir.isEmpty() ? "inArchiveDir=" + inArchiveDir : "") + ']').replaceAll(", \\]", "]");
