@Override
	public ProgramDB generateProgram(String programName) throws Exception {

		if ("NotepadMergeListingTest".equals(programName)) {
			return buildNotepadMergeListingTestProgram();
		}
		else if ("NotepadMergeListingTest_X86".equals(programName)) {
			return buildNotepadMergeListingTest_X86Program();
		}
		else if ("notepad".equals(programName)) {
			return buildNotepadProgram();
		}
		else if ("notepad.exe_3.1_w_DotDotDot".equals(programName)) {
			return buildNotepadDotDotDotProgram();
		}
		else if ("notepad2".equals(programName)) {
			return buildNotepadProgram();
		}
		else if ("notepad3".equals(programName)) {
			return buildNotepadProgram3();
		}
		else if ("notepad4".equals(programName)) {
			return buildNotepadProgram();
		}
		throw new AssertException("Add new builder for program: " + programName);
	}
We keep track of this to know if there are any changes in static initialization.  We want
to make sure that all program building runs result in the same ID sequences.  The first
program built triggers static loading, which will cause the IDs for that run to be 
larger than the subsequent runs.  So, we call all known static initializers before we 
run.  This variable lets us know if a new initializer was added, as the ID value between
the first run and the second run will be different.
Ghidra/Features/Base/src/test/java/ghidra/program/database/MergeProgramGenerator_Notepads.java