diff --git a/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java b/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java
index 9b8e5d8..f147b08 100644
--- a/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java
+++ b/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG.
+ * Copyright (c) 2008, 2019 SAP AG and IBM Corporation.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    SAP AG - initial API and implementation
+ *    Andrew Johnson (IBM Corporation) - alt text
  *******************************************************************************/
 package org.eclipse.mat.ui.rcp.actions;
 
@@ -135,7 +136,7 @@
                                     : RESOURCE_ICON;
 
                     buffer.append("<li style=\"image\" value=\"bullet\">"); //$NON-NLS-1$
-                    buffer.append("<img src =\"").append(icon).append("\"/>"); //$NON-NLS-1$ //$NON-NLS-2$
+                    buffer.append("<img src =\"").append(icon).append("\" alt=\"\">"); //$NON-NLS-1$ //$NON-NLS-2$
                     buffer.append("<a href=\"http://org.eclipse.ui.intro/runAction?" //$NON-NLS-1$
                                     + "standby=true&amp;pluginId=org.eclipse.mat.ui.rcp&amp;" //$NON-NLS-1$
                                     + "class=org.eclipse.mat.ui.rcp.actions.OpenEditorAction&amp;param="); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java
index 2ccf59f..ed0a1e4 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2012 SAP AG and IBM Corporation
+ * Copyright (c) 2010, 2019 SAP AG and IBM Corporation
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0 
  * which accompanies this distribution, and is available at 
@@ -48,6 +48,7 @@
 import org.eclipse.mat.ui.accessibility.AccessibleCompositeAdapter;
 import org.eclipse.mat.ui.actions.QueryDropDownMenuAction;
 import org.eclipse.mat.ui.editor.AbstractEditorPane;
+import org.eclipse.mat.ui.editor.CompositeHeapEditorPane;
 import org.eclipse.mat.ui.editor.MultiPaneEditor;
 import org.eclipse.mat.ui.internal.panes.QueryResultPane;
 import org.eclipse.mat.ui.internal.panes.TableResultPane;
@@ -159,6 +160,14 @@
 	{
         AbstractEditorPane pane = resultPane(state, editor);
 		ComparedResult entry = null;
+		if (pane != null)
+		{
+            QueryResult qr = pane.getAdapter(QueryResult.class);
+            if (qr != null && qr.getSubject() instanceof IResultTree)
+                entry = new ComparedResult(state, editor, (IResultTree)qr.getSubject());
+            if (qr != null && qr.getSubject() instanceof IResultTable)
+                entry = new ComparedResult(state, editor, (IResultTable)qr.getSubject());
+		}
 		if (pane instanceof HistogramPane)
 		{
 			entry = new ComparedResult(state, editor, ((HistogramPane) pane).getHistogram());
@@ -196,6 +205,14 @@
 	public static boolean accepts(PaneState state, MultiPaneEditor editor)
 	{
 	    AbstractEditorPane pane = resultPane(state, editor);
+	    if (pane != null)
+	    {
+	        QueryResult qr = pane.getAdapter(QueryResult.class);
+	        if (qr != null && qr.getSubject() instanceof IResultTree)
+	            return true;
+	        if (qr != null && qr.getSubject() instanceof IResultTable)
+	            return true;
+	    }
 		return (pane instanceof HistogramPane) || (pane instanceof TableResultPane) ||
 		                pane instanceof QueryResultPane && 
 		                ((QueryResultPane) pane).getSrcQueryResult().getSubject() instanceof IResultTree;
@@ -206,12 +223,14 @@
         AbstractEditorPane pane;
         if (state.isActive() && state.getType() == PaneState.PaneType.COMPOSITE_CHILD)
         {
-            state = state.getParentPaneState();
-            pane = editor.getEditor(state);
+            PaneState pstate = state.getParentPaneState();
+            pane = editor.getEditor(pstate);
             if (pane instanceof OQLPane)
                 pane = ((OQLPane)pane).getEmbeddedPane();
-            else
-                pane = null;
+            else if (pane instanceof CompositeHeapEditorPane)
+            {
+                pane = ((CompositeHeapEditorPane)pane);
+            }
         }
         else
         {
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java
index fe73568..c580049 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG and others.
+ * Copyright (c) 2008, 2019 SAP AG, IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    SAP AG - initial API and implementation
+ *    Andrew Johnson (IBM Corporation) - MAT Calcite
  *******************************************************************************/
 package org.eclipse.mat.ui.editor;
 
@@ -111,8 +112,7 @@
     public void setFocus()
     {}
 
-    @SuppressWarnings("unchecked")
-    public Object getAdapter(Class adapter)
+    public <T> T getAdapter(Class<T> adapter)
     {
         return null;
     }
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java
index 080ecd1..913efdc 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG.
+ * Copyright (c) 2008, 2019 SAP AG and IBM Corporation.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    SAP AG - initial API and implementation
+ *    Andrew Johnson (IBM Corporation) - MAT Calcite
  *******************************************************************************/
 package org.eclipse.mat.ui.editor;
 
@@ -159,6 +160,13 @@
         }
     }
 
+    public <T> T getAdapter(Class<T> adapter)
+    {
+        if (embeddedPane != null)
+            return embeddedPane.getAdapter(adapter);
+        return super.getAdapter(adapter);
+    }
+
     @Override
     public void contributeToToolBar(IToolBarManager manager)
     {
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java
index e37289e..7df9ce3 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java
@@ -380,4 +380,16 @@
         return srcQueryResult;
     }
 
+    public <T> T getAdapter(Class<T> adapter)
+    {
+        if (adapter.isAssignableFrom(srcQueryResult.getClass()))
+        {
+            return (adapter.cast(srcQueryResult));
+        }
+        if (adapter.isAssignableFrom(srcQueryResult.getSubject().getClass()))
+        {
+            return (adapter.cast(srcQueryResult.getSubject()));
+        }
+        return super.getAdapter(adapter);
+    }
 }
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java
index 6e828c9..d5710b5 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG.
+ * Copyright (c) 2008, 2019 SAP AG and IBM Corporation.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    SAP AG - initial API and implementation
+ *    Andrew Johnson (IBM Corporation) - MAT Calcite
  *******************************************************************************/
 package org.eclipse.mat.ui.internal.panes;
 
@@ -254,6 +255,19 @@
         throw new UnsupportedOperationException();
     }
 
+    public <T> T getAdapter(Class<T> adapter)
+    {
+        if (adapter.isAssignableFrom(queryResult.getClass()))
+        {
+            return (adapter.cast(queryResult));
+        }
+        if (adapter.isAssignableFrom(queryResult.getSubject().getClass()))
+        {
+            return (adapter.cast(queryResult.getSubject()));
+        }
+        return super.getAdapter(adapter);
+    }
+
     @Override
     public void dispose()
     {
