public void scanFunctions(Iterator<Function> functions, int countestimate, TaskMonitor monitor)
			throws DecompileException {

		if (!functions.hasNext()) {
			return;
		}

		if (isShutdown.get()) {
			return;
		}

		ParallelDecompileTask taskrun =
			new ParallelDecompileTask(program, monitor, new SignatureTask());
		runningTasks.add(taskrun);
		taskrun.decompile(functions, countestimate);
		runningTasks.remove(taskrun);
	}
Generate signatures for a (potentially large) set of functions by spawning multiple
threads to parallelize the work

@param functions the set of functions to signature
@param countestimate estimated number of functions (to initialize the monitor)
@param monitor controls interruptions and progress reports
@throws DecompileException if the functions cannot be decompiled
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/GenSignatures.java