private void searchProgram(Program targetProgram, RandomForestRowObject modelRow) {
		GetAddressesToClassifyTask getTask =
			new GetAddressesToClassifyTask(targetProgram, plugin.getMinUndefinedRangeSize());
		//don't want to use the dialog's progress bar
		TaskLauncher.launchModal("Gathering Addresses To Classify", getTask);
		if (getTask.isCancelled()) {
			return;
		}
		AddressSet execNonFunc = null;
		if (restrictBox.isSelected()) {
			execNonFunc = getTask.getAddressesToClassify((long) modBox.getSelectedItem());
		}
		else {
			execNonFunc = getTask.getAddressesToClassify();
		}
		FunctionStartTableProvider provider =
			new FunctionStartTableProvider(plugin, targetProgram, execNonFunc, modelRow, false);
		addGeneralActions(provider, targetProgram);
		DisassembleFunctionStartsAction disassembleAction = null;
		if (params.isRestrictedByContext()) {
			disassembleAction = new DisassembleAndApplyContextAction(plugin, targetProgram,
				provider.getTable(), provider.getTableModel());
		}
		else {
			disassembleAction = new DisassembleFunctionStartsAction(plugin, targetProgram,
				provider.getTable(), provider.getTableModel());
		}
		plugin.getTool().addLocalAction(provider, disassembleAction);
		CreateFunctionsAction createActions = new CreateFunctionsAction(plugin, targetProgram,
			provider.getTable(), provider.getTableModel());
		plugin.getTool().addLocalAction(provider, createActions);

	}
Returns the program used to train the models
@return source program
Ghidra/Extensions/MachineLearning/src/main/java/ghidra/machinelearning/functionfinding/FunctionStartRFParamsDialog.java