Bug 138283 [KeyBindings] Action set with accelerator causes conflict
Build: 3.2 RC1a 1) Installed the attached plugin 2) Switch to the Java perspective 3) Type Ctrl+Shift+T -> Nothing happens. There is a conflict between the JDT's "Open Type" action, and the action set defined by the attached plugin. The conflict occurs even though the action set in question is not enabled in the Java perspective. Actions from a disabled action set should not be stealing key bindings from actions that do apply in that perspective. This occurs if you install the Eclipse Callisto release with JDT and BIRT. BIRT defines an action set with an action bound to Ctrl+Shift+T. This causes the JDT "Open Type" action to not be reachable by the Ctrl+Shift+T binding in the Java perspective.
bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
* 
	 * @param bindings
	 *            The bindings which all match the same trigger sequence; must
	 *            not be <code>null</code>, and should contain at least two
	 *            items. This collection should only contain instances of
	 *            <code>Binding</code> (i.e., no <code>null</code> values).
	 * @param activeContextTree
	 *            The tree of contexts to be used for all of the comparison. All
	 *            of the keys should be active context identifiers (i.e., never
	 *            <code>null</code>). The values will be their parents (i.e.,
	 *            possibly <code>null</code>). Both keys and values are
	 *            context identifiers (<code>String</code>). This map should
	 *            never be empty, and must never be <code>null</code>.
	 * @return The binding which best matches the current state. If there is a
	 *         tie, then return <code>null</code>.
	 */
	private final Binding resolveConflicts(final Collection bindings,
			final Map activeContextTree) {
		/*
		 * This flag is used to indicate when the bestMatch binding conflicts
		 * with another binding. We keep the best match binding so that we know
		 * if we find a better binding. However, if we don't find a better
		 * binding, then we known to return null.
		 */
		boolean conflict = false;
		final Iterator bindingItr = bindings.iterator();
		Binding bestMatch = (Binding) bindingItr.next();
		/*
		 * Iterate over each binding and compare it with the best match. If a
		 * better match is found, then replace the best match and set the