public void scheduleTask(GTask task, int priority, String groupName) {
		lock.lock();
		try {
			if (runningGroup != null && runningGroup.getDescription().equals(groupName)) {
				scheduleTask(task, priority, true);
				return;
			}
			for (GTaskGroup group : taskGroupList) {
				if (group.getDescription().equals(groupName)) {
					GScheduledTask newTask = group.doAddTask(task, priority);
					notifyTaskScheduled(newTask);
					runNextTaskIfNotBusyOrSuspended();
					return;
				}
			}
			GTaskGroup gTaskGroup = new GTaskGroup(groupName, true);
			gTaskGroup.addTask(task, priority);
			taskGroupList.add(gTaskGroup);
			notifyTaskGroupScheduled(gTaskGroup);
			isBusy.signal();
			runNextTaskIfNotBusyOrSuspended();
		}
		finally {
			lock.unlock();
		}

	}
Schedules a task to be run by this TaskManager within the group with the given group name.
If a group already exists with the given name(either currently running or waiting), the task
will be added to that group. Otherwise, a new group will be created with the given group name
and the task will be placed in that group.

@param task the task to be run.
@param priority the priority of the task.  Lower numbers are run before higher numbers.
@param groupName The name of the group that the task will be added to.
Ghidra/Framework/Project/src/main/java/ghidra/framework/task/GTaskManager.java