@Override
	public void initialize(String programName, OriginalProgramModifierListener modifier)
			throws Exception {
		cleanup();

		MergeProgramGenerator programGenerator = createProgramGenerator(programName);
		originalProgram = programGenerator.generateProgram(programName);
		try (Transaction tx = originalProgram.openTransaction("Modify Original Program")){
			modifier.modifyOriginal(originalProgram);
		}

		privateProgram = cloneProgram(originalProgram, this);
		try (Transaction tx = privateProgram.openTransaction("Modify Private Program")){
			modifier.modifyPrivate(privateProgram);
		}

		latestProgram = cloneProgram(originalProgram, this);
		try (Transaction tx = latestProgram.openTransaction("Modify Latest Program")){
			modifier.modifyLatest(latestProgram);
		}

		resultProgram = cloneProgram(latestProgram, this);

		recordChanges();
		clearChanges();
	}
The non-preferred way of configuring tests for merge testing, which is to use real
programs that are files on disk.  You should try to use the
{@link InMemoryProgramMTFModel} by using 
{@link MergeTestFacilitator#initialize(String, MergeProgramModifier)} when writing
merge tests.
Ghidra/Features/Base/src/test/java/ghidra/program/database/RealProgramMTFModel.java