public <T extends DomainObject> boolean execute(Command<T> cmd, T obj) {
		if (tool == null) {
			return false; // disposed
		}

		tool.clearStatusInfo();
		boolean success = false;
		isExecuting = true;
		try {
			success = applyCommand(cmd, obj);
		}
		finally {
			isExecuting = false;
		}

		if (!success) {
			String statusMessage = cmd.getName() + " failed";
			String cmdMessage = cmd.getStatusMsg();
			if (cmdMessage != null) {
				statusMessage += ": " + cmdMessage;
			}
			tool.setStatusInfo(statusMessage);
		}

		return success;
	}
Execute the given command in the foreground.  Required domain object transaction will be
started with delayed end to ensure that any follow-on analysis starts prior to transaction 
end.

@param cmd command to execute
@param obj domain object to which the command will be applied
@return the completion status of the command

@see Command#applyTo(DomainObject)
Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/ToolTaskManager.java