Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SearchDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SearchDialog.java	(revision 17054)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SearchDialog.java	(revision 17055)
@@ -69,5 +69,5 @@
     private JRadioButton remove;
     private JRadioButton inSelection;
-
+    private TaggingPresetSelector selector;
     /**
      * Constructs a new {@code SearchDialog}.
@@ -232,5 +232,5 @@
          * if the corresponding group of the preset exists, otherwise it is simply ' presetName'.
          */
-        TaggingPresetSelector selector = new TaggingPresetSelector(false, false);
+        selector = new TaggingPresetSelector(false, false);
         selector.setBorder(BorderFactory.createTitledBorder(tr("Search by preset")));
         selector.setDblClickListener(ev -> setPresetDblClickListener(selector, editorComponent));
@@ -532,3 +532,10 @@
         }
     }
+
+    @Override
+    public void dispose() {
+        if (selector != null)
+            selector.destroy();
+        super.dispose();
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 17054)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 17055)
@@ -47,4 +47,5 @@
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.gui.widgets.SearchTextResultListPanel;
+import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -54,5 +55,5 @@
  */
 public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPreset>
-        implements DataSelectionListener, TaggingPresetListener {
+        implements DataSelectionListener, TaggingPresetListener, Destroyable {
 
     private static final int CLASSIFICATION_IN_FAVORITES = 300;
@@ -465,3 +466,9 @@
         classifications.loadPresets(TaggingPresets.getTaggingPresets());
     }
+
+    @Override
+    public void destroy() {
+        TaggingPresets.removeListener(this);
+    }
+
 }
