Index: /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 10780)
+++ /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 10781)
@@ -216,5 +216,5 @@
         @Override
         public void beginTask(String title) {
-            if (title != null) {
+            if (title != null && !title.isEmpty()) {
                 if (Main.isDebugEnabled()) {
                     Main.debug(title);
@@ -258,5 +258,10 @@
         @Override
         public ProgressMonitor createSubTaskMonitor(int ticks, boolean internal) {
-            return latestSubtask;
+            if (latestSubtask != null) {
+                return latestSubtask;
+            } else {
+                // subTask has not been called before, such as for plugin update, #11874
+                return this;
+            }
         }
 
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 10780)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 10781)
@@ -67,4 +67,5 @@
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -986,17 +987,6 @@
                 // If only some plugins have to be updated, filter the list
                 if (pluginsWanted != null && !pluginsWanted.isEmpty()) {
-                    for (Iterator<PluginInformation> it = plugins.iterator(); it.hasNext();) {
-                        PluginInformation pi = it.next();
-                        boolean found = false;
-                        for (PluginInformation piw : pluginsWanted) {
-                            if (pi.name.equals(piw.name)) {
-                                found = true;
-                                break;
-                            }
-                        }
-                        if (!found) {
-                            it.remove();
-                        }
-                    }
+                    final Collection<String> pluginsWantedName = Utils.transform(pluginsWanted, piw -> piw.name);
+                    plugins = SubclassFilteredCollection.filter(plugins, pi -> pluginsWantedName.contains(pi.name));
                 }
             } catch (RuntimeException e) {
