private ProgramDB buildDiffTestPgm1() throws Exception {
		ToyProgramBuilder builder = new ToyProgramBuilder("DiffTestPgm1", true, 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);

		// code units
		builder.addBytesFallthrough("100203f");
		builder.disassemble("0x100203f", 1);
		builder.addBytesMoveImmediate("0x100230d", (byte) 1);
		builder.disassemble("0x100230d", 1);

		builder.addBytesNOP("0x100354f", 2);
		builder.disassemble("0x100354f", 1);

		// data
		// CodeUnitMergerManagerTest - checks disassembly and data
		//@formatter:off
		builder.setBytes("0x10013d6", new byte[] { 
			0x6d, 0x00, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x6e, 0x41  
		});
		//@formatter:on

		// comments
		builder.createComment("1002304", "EOL comment", CommentType.EOL);
		builder.createComment("1002306", "\"Pre Comment\"", CommentType.PRE);
		builder.createComment("100230c", "Post comment", CommentType.POST);
		builder.createComment("100230d", "simple comment", CommentType.PRE);
		builder.createComment("100230d", "simple comment", CommentType.EOL);
		builder.createComment("100230d", "simple comment", CommentType.POST);
		builder.createComment("100230d", "simple comment", CommentType.REPEATABLE);
		builder.createComment("100230d", "simple comment", CommentType.PLATE);

		builder.createComment("1002312", "\"My comment that the other comment is in.\"",
			CommentType.PRE);
		builder.createComment("1002312", "My comment that the other comment is in.",
			CommentType.EOL);
		builder.createComment("1002312", "My comment that the other comment is in.",
			CommentType.POST);

		builder.createComment("1002040", "Pre in P1.", CommentType.PRE);
		builder.createComment("1002040", "EOL in P1.", CommentType.EOL);
		builder.createComment("1002040", "Post in P1.", CommentType.POST);
		builder.createComment("1002040", "Plate in P1.", CommentType.PLATE);
		builder.createComment("1002040", "Repeatable in P1.", CommentType.REPEATABLE);

		// data types
		builder.addCategory(new CategoryPath("/cat1"));

		// for FunctionMergeManager2Test
		//
		DataType dt = new ByteDataType();
		Parameter p = new ParameterImpl(null, dt, builder.getProgram());
		builder.createEmptyFunction(null, "10018cf", 10, null, p);
		builder.createEmptyFunction(null, "100299e", 10, null, p, p, p);
		builder.createEmptyFunction(null, "1002cf5", 10, null, p, p, p, p, p);

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

		ProgramDB program = builder.getProgram();

		builder.setIntProperty("10018ae", "Space", 1);
		builder.setIntProperty("10018ba", "Space", 1);
		builder.setIntProperty("10018ff", "Space", 1);
		builder.setIntProperty("100248c", "Space", 1);

		builder.setObjectProperty("100248c", "testColor", new SaveableColor(Palette.CYAN));
		builder.setObjectProperty("10039dd", "testColor", new SaveableColor(Palette.BLACK));
		builder.setObjectProperty("10039f8", "testColor", new SaveableColor(Palette.BLACK));
		builder.setObjectProperty("10039fe", "testColor", new SaveableColor(Palette.RED));

		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