Bug 342998 Refactor ESelectionService into multiple classes
While there is a master/slave relationship "enforced" by the current implementation, it is non-obvious as the code is quite convoluted. The implementation needs to be refactored to enhance readability.
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/SelectionServiceImpl.java
*/
	public void setSelection(Object selection) {
		if (selection != null) {
			context.set(OUT_SELECTION, selection);
			if (isMasterService() || (activePart != null && activePart.getContext() == context)) {
				serviceRoot.getContext().set(IServiceConstants.ACTIVE_SELECTION, selection);
			}
		} else {
			context.remove(OUT_SELECTION);
			if (isMasterService() || (activePart != null && activePart.getContext() == context)) {
				serviceRoot.getContext().remove(IServiceConstants.ACTIVE_SELECTION);
			}
		}
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.e4.ui.selection.ESelectionService#getSelection()
	 */
	public Object getSelection() {
		if (activePart == null) {
			return null;
		}
		IEclipseContext partContext = activePart.getContext();
		return partContext == null ? null : partContext.get(ESelectionService.SELECTION);
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see