@Override
	protected void doLoad(Accumulator<Function> accumulator, TaskMonitor monitor)
			throws CancelledException {

		if (program == null) {
			return;
		}
		if (tags == null) {
			return;
		}

		// Loop over all functions in the program, filtering out those that do not
		// do not contain at least one of the tags in the provided set.
		FunctionIterator iter = program.getFunctionManager().getFunctions(true);
		int realFunctionCount = program.getFunctionManager().getFunctionCount();
		monitor.initialize(realFunctionCount);
		while (iter.hasNext()) {
			monitor.checkCancelled();
			monitor.incrementProgress(1);
			Function f = iter.next();
			boolean hasTag = f.getTags().stream().anyMatch(t -> tags.contains(t));
			if (hasTag) {
				accumulator.add(f);
			}
		}

		FunctionIterator externals = program.getFunctionManager().getExternalFunctions();
		for (Function f : externals) {
			monitor.checkCancelled();
			monitor.incrementProgress(1);
			boolean hasTag = f.getTags().stream().anyMatch(t -> tags.contains(t));
			if (hasTag) {
				accumulator.add(f);
			}
		}
	}
Constructor

@param title the title of the model
@param serviceProvider the service provider
@param program the current program
@param monitor the task monitor
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/tags/FunctionTableModel.java