Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagAction.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagAction.java	(revision 35681)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagAction.java	(revision 35682)
@@ -49,4 +49,6 @@
         if (dlg != null && dlg.isVisible()) {
             dlg.doSelectionChanged(selection);
+        } else {
+        	dlg = null;
         }
     }
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagDialog.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagDialog.java	(revision 35681)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagDialog.java	(revision 35682)
@@ -35,5 +35,4 @@
 import javax.swing.ListSelectionModel;
 import javax.swing.UIManager;
-import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.DefaultTableCellRenderer;
@@ -138,5 +137,4 @@
                 tableModel.updateData(MainApplication.getLayerManager().getEditDataSet().getSelected());
             });
-            ImageProvider.get(type);
             p.add(jt);
         }
@@ -170,13 +168,4 @@
     }
 
-    /*private OsmPrimitive getSelectedPrimitive() {
-        int idx = tbl.getSelectedRow();
-        if (idx>= 0) {
-            return tableModel.getPrimitiveAt(tbl.convertRowIndexToModel(idx));
-        } else {
-            return null;
-        }
-    }*/
-
     private final MouseAdapter tableMouseAdapter = new MouseAdapter() {
         @Override
@@ -189,13 +178,9 @@
     };
 
-    private final ListSelectionListener selectionListener = new ListSelectionListener() {
-        @Override
-        public void valueChanged(ListSelectionEvent e) {
-            currentSelection = getSelectedPrimitives();
-            if (currentSelection != null && MainApplication.isDisplayingMapView()) {
-                if (highlightHelper.highlightOnly(currentSelection)) {
-                    MainApplication.getMap().mapView.repaint();
-                }
-            }
+    private final ListSelectionListener selectionListener = e -> {
+        currentSelection = getSelectedPrimitives();
+        if (currentSelection != null && MainApplication.isDisplayingMapView()
+                && highlightHelper.highlightOnly(currentSelection)) {
+            MainApplication.getMap().mapView.repaint();
         }
     };
@@ -297,5 +282,5 @@
         public void actionPerformed(ActionEvent e) {
             String txt = cbTagSet.getText();
-            System.out.println(txt);
+            Logging.debug(txt);
             List<String> history = cbTagSet.getHistory();
             history.remove(txt);
@@ -377,3 +362,11 @@
         }
     }
+
+    @Override
+    public void setVisible(boolean visible) {
+        super.setVisible(visible);
+        if (!visible) {
+            tableModel.updateData(Collections.emptyList());
+        }
+    }
 }
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTaggerTableModel.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTaggerTableModel.java	(revision 35681)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTaggerTableModel.java	(revision 35682)
@@ -7,5 +7,7 @@
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.JTable;
@@ -28,5 +30,5 @@
 public class MultiTaggerTableModel extends AbstractTableModel implements DataSelectionListener {
 
-    ArrayList<OsmPrimitive> list = new ArrayList<>(50);
+    List<OsmPrimitive> list = new ArrayList<>();
     String[] mainTags = new String[]{};
     boolean[] isSpecialTag = new boolean[]{};
@@ -67,18 +69,18 @@
         String var = mainTags[columnIndex-1];
         OsmPrimitive p = list.get(rowIndex);
-        if (var.equals("id")) {
+        switch (var) {
+        case "id":
             return String.valueOf(p.getUniqueId());
-        } else if (var.equals("type")) {
-            return OsmPrimitiveType.from(p).getAPIName().substring(0, 1).toUpperCase();
-        } else if (var.equals("area")) {
-            if (p.getDisplayType() == OsmPrimitiveType.CLOSEDWAY) {
+        case "type":
+            return OsmPrimitiveType.from(p).getAPIName().substring(0, 1).toUpperCase(Locale.ENGLISH);
+        case "area":
+            if (p.getDisplayType() == OsmPrimitiveType.CLOSEDWAY)
                 return String.format("%.1f", Geometry.closedWayArea((Way) p));
-            } else {
-                return "";
-            }
-        } else if (var.equals("length")) {
-            if (p instanceof Way) {
+            break;
+        case "length":
+            if (p instanceof Way)
                 return String.format("%.1f", ((Way) p).getLength());
-            }
+            break;
+        default:
         }
         return "";
@@ -179,10 +181,5 @@
         if (table.isEditing()) table.getCellEditor().stopCellEditing();
 
-        list.clear();
-        for (OsmPrimitive p : sel) {
-            if (shownTypes.contains(p.getDisplayType())) {
-                list.add(p);
-            }
-        }
+        list = sel.stream().filter(p -> shownTypes.contains(p.getDisplayType())).collect(Collectors.toList());
         fireTableDataChanged();
     }
