private void doDispose(Program localProgram) {
		if (localProgram == null) {
			return; // already been disposed()
		}

		synchronized (this) { // sync against multiple dispose calls
			if (service != null) {
				service.dispose();
				service = null;
			}
		}

		managerMap.remove(localProgram);
		toolMap.remove(localProgram);

		synchronized (this) {
			queue.clear();
			for (AnalysisTaskList list : taskArray) {
				list.clear();
			}
		}

		localProgram.removePrivateEventQueue(eventQueueID);
	}
Returns the tool being used for analysis.  <b>This can be null</b> if analysis has never
been run or if the tool that previously ran analysis has been closed.
@return the tool being used for analysis.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AutoAnalysisManager.java