Bug 345735 - JDT leak tests are failing due to ToolBarManagerRenderer holding onto references
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java
index f8868f2..e262198 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java
@@ -19,6 +19,7 @@
 import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
 import org.eclipse.e4.ui.model.application.ui.menu.MOpaqueToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
@@ -468,6 +469,17 @@
 			final MTrimElement child = children.get(i);
 			final Object obj = child.getTransientData().get(OBJECT);
 			if (obj != null && obj.equals(item)) {
+				if (child instanceof MToolBarElement) {
+					renderer.clearModelToContribution((MToolBarElement) child, item);
+				}
+
+				if (child instanceof MToolBar && item instanceof IToolBarContributionItem) {
+					IToolBarManager parent = ((IToolBarContributionItem) item).getToolBarManager();
+					if (parent instanceof ToolBarManager) {
+						renderer.clearModelToManager((MToolBar) child, (ToolBarManager) parent);
+					}
+				}
+				
 				children.remove(i);
 				return (IContributionItem) obj;
 			}