Bug 87856 [Commands] Last closed editor leaked due to reference by command manager
bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/CommandManager.java
* @return The command with the given identifier; this value will never be
	 *         <code>null</code>, but it might be undefined.
	 * @see Command
	 */
	public final Command getCommand(final String commandId) {
		if (commandId == null) {
			throw new NullPointerException(
					"A command may not have a null identifier"); 
		}
		if (commandId.length() < 1) {
			throw new IllegalArgumentException(
					"The command must not have a zero-length identifier"); 
		}
		Command command = (Command) commandsById.get(commandId);
		if (command == null) {
			command = new Command(commandId);
			commandsById.put(commandId, command);
			command.addCommandListener(this);
		}
		return command;
	}
	/**
	 * Returns the set of identifiers for those category that are defined.
	 * 
	 * @return The set of defined category identifiers; this value may be empty,
	 *         but it is never <code>null</code>.
	 */
	public final Set getDefinedCategoryIds() {
		return Collections.unmodifiableSet(definedCategoryIds);
	}