private void addFunctions() {
		ProgramManager service = tool.getService(ProgramManager.class);
		Program currentProgram = service.getCurrentProgram();
		FunctionTableModel functionTableModel = new FunctionTableModel(tool, currentProgram);

		TableSelectionDialog<FunctionRowObject> diag = new TableSelectionDialog<>(
			"Select Functions: " + currentProgram.getName(), functionTableModel, true);
		tool.showDialog(diag);
		List<FunctionRowObject> rows = diag.getSelectionItems();
		if (CollectionUtils.isBlank(rows)) {
			return; // the table chooser can return null if the operation was cancelled
		}

		List<Function> functions =
			rows.stream().map(row -> row.getFunction()).collect(Collectors.toList());

		if (model instanceof AnyToAnyFunctionComparisonModel defaultModel) {
			defaultModel.addFunctions(functions);
		}

	}
Saves the current configuration state of the components that compose 
the function comparison provider

@param saveState the new configuration state
Ghidra/Features/CodeCompare/src/main/java/ghidra/features/codecompare/plugin/FunctionComparisonProvider.java