@Test
	public void testMultiplePropertyTypeConflicts() throws Exception {
		// ** DiffTestPgm2 **
		// 10018ba = 1
		// 10018ce = 2
		// 10018ff = 2
		// 1002428 = 1
		// 100248c = 1 , WHITE(255,255,255)
		// 10039f1 = BLACK(0,0,0)
		// 10039f8 = BLACK(0,0,0)
		// 10039fe = GREEN(0,255,0)

		mtf.initialize("DiffTestPgm2", new ProgramModifierListener() {

			@Override
			public void modifyLatest(ProgramDB program) {
				PropertyMapManager pmm = program.getUsrPropertyManager();

				IntPropertyMap ipm = pmm.getIntPropertyMap("Space");
				ipm.add(addr(program, "0x10018ba"), 3);
				ipm.add(addr(program, "0x10018ff"), 1);
				ipm.add(addr(program, "0x1002428"), 4);
				ipm.add(addr(program, "0x100248c"), 5);

				ObjectPropertyMap<?> opm = pmm.getObjectPropertyMap("testColor");
				opm.remove(addr(program, "0x100248c"));
				opm.remove(addr(program, "0x10039f1"));
				opm.add(addr(program, "0x10039f8"), new SaveableColor(Color.BLUE));
				opm.add(addr(program, "0x10039fe"), new SaveableColor(Color.PINK));
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				PropertyMapManager pmm = program.getUsrPropertyManager();

				IntPropertyMap ipm = pmm.getIntPropertyMap("Space");
				ipm.add(addr(program, "0x10018ce"), 5);
				ipm.add(addr(program, "0x10018ff"), 1);
				ipm.add(addr(program, "0x1002428"), 3);
				ipm.add(addr(program, "0x100248c"), 6);

				ObjectPropertyMap<?> opm = pmm.getObjectPropertyMap("testColor");
				opm.add(addr(program, "0x100248c"), new SaveableColor(Color.RED));
				opm.add(addr(program, "0x10039f1"), new SaveableColor(Color.ORANGE));
				opm.remove(addr(program, "0x10039f8"));
				opm.remove(addr(program, "0x10039fe"));
			}
		});

		executeMerge(ASK_USER);
		chooseUserDefined(addr("0x1002428"), "testColor", KEEP_LATEST);
		chooseUserDefined(addr("0x100248c"), "testColor", KEEP_MY);
		chooseUserDefined(addr("0x100248c"), "testColor", KEEP_LATEST); // Remove
		chooseUserDefined(addr("0x10039f1"), "testColor", KEEP_MY);     // Change
		chooseUserDefined(addr("0x10039f8"), "testColor", KEEP_LATEST); // Change
		chooseUserDefined(addr("0x10039fe"), "testColor", KEEP_MY);     // Remove
		waitForMergeCompletion();

		PropertyMapManager pmm = resultProgram.getUsrPropertyManager();

		IntPropertyMap ipm = pmm.getIntPropertyMap("Space");
		Address address = resultProgram.getMinAddress();
		address = ipm.getNextPropertyAddress(address);
		assertEquals(addr("0x10018ba"), address);
		assertEquals(3, ipm.getInt(address));
		address = ipm.getNextPropertyAddress(address);
		assertEquals(addr("0x10018ce"), address);
		assertEquals(5, ipm.getInt(address));
		address = ipm.getNextPropertyAddress(address);
		assertEquals(addr("0x10018ff"), address);
		assertEquals(1, ipm.getInt(address));
		address = ipm.getNextPropertyAddress(address);
		assertEquals(addr("0x1002428"), address);
		assertEquals(4, ipm.getInt(address));
		address = ipm.getNextPropertyAddress(address);
		assertEquals(addr("0x100248c"), address);
		assertEquals(6, ipm.getInt(address));
		address = ipm.getNextPropertyAddress(address);
		assertNull(address);

		ObjectPropertyMap<?> opm = pmm.getObjectPropertyMap("testColor");
		address = resultProgram.getMinAddress();
		address = opm.getNextPropertyAddress(address);
		assertEquals(addr("0x10039f1"), address);
		assertEquals(new SaveableColor(Color.ORANGE), opm.get(address));
		address = opm.getNextPropertyAddress(address);
		assertEquals(addr("0x10039f8"), address);
		assertEquals(new SaveableColor(Color.BLUE), opm.get(address));
		address = opm.getNextPropertyAddress(address);
		assertNull(address);
	}
Test the merge of the versioned program's listing.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/UserDefinedPropertyMergeManagerTest.java