Index: src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 11303)
+++ src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(working copy)
@@ -434,18 +434,10 @@
     }
 
     @Override public void primitivesRemoved(PrimitivesRemovedEvent event) {
-        // Remove purged primitives (fix #8639)
-        for (TestError err : errors) {
-            try {
-                err.getPrimitives().removeAll(event.getPrimitives());
-            } catch (UnsupportedOperationException e) {
-                if (event.getPrimitives().containsAll(err.getPrimitives())) {
-                    err.getPrimitives().clear();
-                } else {
-                    Main.warn(e, "Unable to remove primitives from "+err+'.');
-                }
-            }
-        }
+        // Remove errors which list of primitives refer to purged primitives (fix #8639)
+        setErrorList(errors.stream()
+                .filter(err -> event.getPrimitives().stream().noneMatch(prim -> err.getPrimitives().contains(prim)))
+                .collect(Collectors.toList()));
     }
 
     @Override public void primitivesAdded(PrimitivesAddedEvent event) {
