private ProgramDB buildDiffTestPgm1_X86() throws Exception {
		ProgramBuilder builder = new ProgramBuilder("DiffTestPgm1", ProgramBuilder._X86, consumer);

		builder.createMemory("d1", "0x100", 0x100);
		builder.createMemory("d2", "0x200", 0x100);
		builder.createMemory(".text", "0x1001000", 0x6600);
		builder.createMemory(".data", "0x1008000", 0x600);
		builder.createMemory(".datau", "0x1008600", 0x1344);
		builder.createMemory(".rsrc", "0x100a000", 0x5400);
		builder.createOverlayMemory("TextOverlay", "0x01001630", 0x200);

		// for FunctionMergeManager2Test
		//
		DataType dt = new ByteDataType();
		ProgramDB program = builder.getProgram();
		Register al = program.getRegister("AL");
		Register ah = program.getRegister("AH");
		Register dr0 = program.getRegister("DR0");
		Register dr1 = program.getRegister("DR1");
		Register dh = program.getRegister("DH");
		Register cs = program.getRegister("CS");
		Register ecx = program.getRegister("ECX");
		Parameter p1 = new ParameterImpl(null, dt, 8, builder.getProgram());
		Parameter p2 = new ParameterImpl(null, dt, 12, builder.getProgram());
		Parameter p3 = new ParameterImpl(null, dt, 16, builder.getProgram());
		Parameter p4 = new ParameterImpl(null, dt, 20, builder.getProgram());
		Parameter p5 = new ParameterImpl(null, dt, 24, builder.getProgram());
		Parameter p_al = new ParameterImpl(null, dt, al, builder.getProgram());
		Parameter p_fee = new ParameterImpl("fee", dt, al, builder.getProgram());
		Parameter p_ah = new ParameterImpl(null, dt, ah, builder.getProgram());
		Parameter p_cs = new ParameterImpl(null, dt, cs, builder.getProgram());
		Parameter p_dr0 = new ParameterImpl(null, dt, dr0, builder.getProgram());
		Parameter p_dr1 = new ParameterImpl(null, dt, dr1, builder.getProgram());
		Parameter p_dh = new ParameterImpl(null, dt, dh, builder.getProgram());
		Parameter p_ecx = new ParameterImpl(null, dt, ecx, builder.getProgram());
		builder.createEmptyFunction(null, null, null, true, "10018cf", 10, null, p_al);
		builder.createEmptyFunction(null, null, null, true, "100299e", 10, null, p_fee, p_ah,
			p_dr1);
		builder.createEmptyFunction(null, null, null, true, "1002cf5", 10, null, p1, p_cs, p3, p4,
			p5);
		builder.createEmptyFunction(null, null, null, true, "1002c93", 10, null, p_ecx, p1, p2);
		builder.createEmptyFunction(null, null, null, true, "10030e4", 10, null, p_dh);
		builder.createEmptyFunction(null, null, null, true, "1004bc0", 10, null, p_dr0);

		builder.setProperty(Program.DATE_CREATED, new Date(100000000)); // arbitrary, but consistent

		builder.setRegisterValue("DR0", "10022d4", "10022e5", 0x1010101);
		builder.setRegisterValue("DR0", "100230b", "100231c", 0xa4561427);
		builder.setRegisterValue("DR0", "1002329", "100233b", 0x40e20100);
		builder.setRegisterValue("DR0", "1003bfc", "1003c10", 0x91ef0600);
		builder.setRegisterValue("DR0", "1003c1c", "1003c36", 0x71f25b2e);

		AbstractGenericTest.setInstanceField("recordChanges", program, Boolean.TRUE);

		UniversalID ID = UniversalIdGenerator.nextID();

		if (lastGeneratedUniversalID != null) {
			if (!lastGeneratedUniversalID.equals(ID)) {
				// if this happens, update initializeStaticUniversalIDUsage()
				throw new AssertException("Expected Test UniversalID has changed.  " +
					"This is probably due to an new static usage of the UniversalIDGenerator.");
			}
		}

		return program;
	}
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_DiffTestPrograms.java