@Override
	public void updateDestinationProgram(Program newProgram) {
		try {
			releaseSynchronizedDomainObject();
		}
		catch (LockException e) {
			Msg.showError(this, null, "Error releasing synchronization to old program", e);
		}
		destinationProgram.release(this);
		destinationProgram = newProgram;
		destinationProgram.addConsumer(this);
		try {
			addSynchronizedDomainObject(destinationProgram);
		}
		catch (Exception e) {
			sourceProgram.release(this);
			destinationProgram.release(this);
			throw new RuntimeException(e.getMessage());
		}
	}
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