Bug 343003 Selection changes for shared parts may not be propagated if they were not originally rendered in the model
The search algorithm currently only iterates through containers for parts. This will not work for parts that are represented by placeholders.
tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/ESelectionServiceTest.java
partService.showPart("partC", PartState.CREATE); 
		assertNull(listener.getPart());
		assertNull(listener.getSelection());
		IEclipseContext contextC = partC.getContext();
		ESelectionService serviceC = (ESelectionService) contextC
				.get(ESelectionService.class.getName());
		listener.reset();
		serviceC.setSelection(selection);
		assertEquals(partC, listener.getPart());
		assertEquals(selection, listener.getSelection());
	}
	static class ConsumerPart {
		public Object input;
		@Inject
		@Optional
		public void setInput(@Named(ESelectionService.SELECTION) Object current) {
			input = current;
		}
	}
	static class ProviderPart extends ConsumerPart {
		private ESelectionService selectionService;
		@Inject
		public void setSelectionService(ESelectionService s) {
			selectionService = s;
		}
		public void setSelection(Object selection) {
			selectionService.setSelection(selection);
		}
	}
	static class TrackingProviderPart extends ProviderPart {