Bug 264899 Replace context name with computable debug string
Contexts currently are required to have a name, but this string is only used for debugging purposes. We should instead store this "debug string" in the context itself, allowing clients to use a computed value to add additional debug information. We can make this name optional by supplying a default value, which simplifies life for clients that don't care about the name (much as toString() is optional and a default is provided for those who don't care to implement it).
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/renderers/swt/ContributedPartFactory.java
if (part instanceof MContributedPart) {
			final Composite newComposite = new Composite((Composite) parentWidget,
					SWT.NONE);
			newWidget = newComposite;
			bindWidget(part, newWidget);
			final MContributedPart contributedPart = (MContributedPart) part;
			final IHandlerService hs = new PartHandlerService(part);
			final IEclipseContext localContext = EclipseContextFactory.create(
					"ContributedPart", parentContext, UIContextScheduler.instance); 
			IEclipseContext outputContext = EclipseContextFactory.create(
					"ContributedPart-output", null, UIContextScheduler.instance); 
			contributedPart.setContext(localContext);
			localContext.set(Composite.class.getName(), newComposite);
			localContext.set(IHandlerService.class.getName(), hs);
			newComposite.addListener(SWT.Activate, new Listener() {
				public void handleEvent(Event event) {
					activate(part);
				}
			});
			localContext.set(IServiceConstants.OUTPUTS, outputContext);
			localContext.set(IEclipseContext.class.getName(), outputContext);
			Object newPart = contributionFactory.create(contributedPart.getURI(),
					localContext);
			ContextInjectionFactory.inject(newPart, localContext);
			contributedPart.setObject(newPart);
		}
		return newWidget;
	}
}