private Program getRemoteProgram(BSimMatchResult result) {
		URL url = getRemoteProgramURL(result);
		if (url == null) {
			return null;
		}

		Program remoteProgram = programManager.openCachedProgram(url, this);
		if (remoteProgram == null) {
			error("Open remote program failed: " + url, result);
			return null;
		}

		if (!openedPrograms.add(remoteProgram)) {
			// The program manager added 'this' as a consumer. We previously opened it and we don't
			// want the program to have the same consumer twice.
			remoteProgram.release(this);
		}
		return remoteProgram;
	}
Generic task for applying information from a function match to the queried function
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/gui/search/results/apply/AbstractBSimApplyTask.java