@SuppressWarnings("hiding")
	// this is from our constructor
	private void initializePrograms(Program sourceProgram, Program destinationProgram,
			boolean rememberProgramIds) throws IOException {

		if (!SystemUtilities.isInTestingMode() && !destinationProgram.canSave()) {
			throw new ReadOnlyException(
				"VT Session destination program is read-only which prevents its use");
		}

		this.sourceProgram = sourceProgram;
		sourceProgram.addConsumer(this);

		this.destinationProgram = destinationProgram;
		destinationProgram.addConsumer(this);

		if (rememberProgramIds) {
			Options properties = getOptions(PROGRAM_ID_PROPERTYLIST_NAME);
			DomainFile sourceDomainFile = sourceProgram.getDomainFile();
			properties.setString(SOURCE_PROGRAM_ID_PROPERTY_KEY, sourceDomainFile.getFileID());
			DomainFile destinationDomainFile = destinationProgram.getDomainFile();
			properties.setString(DESTINATION_PROGRAM_ID_PROPERTY_KEY,
				destinationDomainFile.getFileID());
		}
	}
Open associated source and destination program files and complete session initialization.
@param projectData active project data
@throws IOException if source or destination program not found within specified project
or an error occured while opening them (e.g., upgrade required).
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/db/VTSessionDB.java