Index: src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
===================================================================
--- src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 16386)
+++ src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(working copy)
@@ -5,6 +5,7 @@
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
+import java.util.Arrays;
 
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
@@ -151,10 +152,15 @@
 
     @Override
     public void destroy() {
-        model.unlinkAsListener();
-        for (Destroyable component : new Destroyable[] {
-                tagInfoViewer, nodeListViewer, relationMemberListViewer, coordinateInfoViewer}) {
-            component.destroy();
+        if (model != null) {
+            model.unlinkAsListener();
+            model = null;
         }
+        Arrays.asList(tagInfoViewer, nodeListViewer, relationMemberListViewer, coordinateInfoViewer).stream()
+                .filter(Destroyable.class::isInstance).forEach(Destroyable::destroy);
+        tagInfoViewer = null;
+        nodeListViewer = null;
+        relationMemberListViewer = null;
+        coordinateInfoViewer = null;
     }
 }
Index: src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 16386)
+++ src/org/openstreetmap/josm/gui/history/VersionTable.java	(working copy)
@@ -254,10 +254,14 @@
 
         @Override
         public void destroy() {
-            if (changesetInfoAction != null)
+            if (changesetInfoAction != null) {
                 changesetInfoAction.destroy();
-            if (userInfoAction != null)
+                changesetInfoAction = null;
+            }
+            if (userInfoAction != null) {
                 userInfoAction.destroy();
+                userInfoAction = null;
+            }
         }
     }
 
