Bug 307122 SelectionServiceImpl leaks RATs
SelectionServiceImpl.track adds an IRunAndTrack that is never removed. So for example each time an editor is opened and closed two extra RATs are added to the application context (once for open and once for close).
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java
if ((part != null) && (activePart != part)) {
			activePart = part;
			IEclipseContext rootContext = serviceRoot.getContext();
			if (rootContext == context) {
				IEclipseContext partContext = part.getContext();
				if (partContext != null) {
					Object selection = partContext.get(OUT_SELECTION);
					notifyListeners(part, selection);
					track(part);
				}
			}
		}
	}
	private boolean isInContainer(MPart part) {
		return isInContainer((MElementContainer<?>) serviceRoot, part);
	}
	private boolean isInContainer(MElementContainer<?> container, MPart part) {
		for (Object object : container.getChildren()) {
			if (object == part) {
				return true;
			} else if (object instanceof MElementContainer<?>) {
				if (isInContainer((MElementContainer<?>) object, part)) {
					return true;
				}
			}
		}
		return false;
	}
	private void notifyListeners(MPart part, Object selection) {
		for (ISelectionListener listener : genericListeners) {