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

		MergeProgramBuilder builder =
			new MergeProgramBuilder(programName, ProgramBuilder._TOY, this);

		MergeProgram mp = builder.createAllMergeProgram();
		modifier.initializeProgram(mp);

		privateProgram = builder.getPrivateProgram();
		disableAutoAnalysis(privateProgram);

		originalProgram = builder.getOriginalProgram();

		// TODO?
		// Make copy while preserving Database-ID 

		resultProgram = builder.getResultProgram();
		disableAutoAnalysis(resultProgram);

		modifier.modifyLatest(builder.createLatestMergeProgram());
		latestChangeSet = resultProgram.getChanges();
		resultProgram.setChangeSet(new ProgramDBChangeSet(resultProgram.getAddressMap(), 20));

		latestProgram = builder.getLatestProgram();
		latestProgram.setChangeSet(new ProgramDBChangeSet(resultProgram.getAddressMap(), 20));

		modifier.modifyPrivate(builder.createPrivateMergeProgram());
		privateChangeSet = privateProgram.getChanges();
		privateProgram.setChangeSet(new ProgramDBChangeSet(resultProgram.getAddressMap(), 20));
	}
A version of the {@link AbstractMTFModel} that allows test writers to use an 
in-memory program, instead of one that is a real program, loaded from a file on disk.
Ghidra/Features/Base/src/test/java/ghidra/program/database/InMemoryProgramMTFModel.java