Bug 312063 SelectionServiceImpl should use ListenerList instead of a HashSet
HashSets are not thread-safe and does not guarantee event order. :(
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java
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) {
			listener.selectionChanged(part, selection);
		}
		notifyTargetedListeners(part, selection);
	}
	private void notifyTargetedListeners(MPart part, Object selection) {
		String id = part.getElementId();