@Test
	public void testApplyBookmarkDifferences() throws Exception {
		// 0x1002306: p1 and p2 have same bookmarks.
		programBuilder1.createBookmark("0x1002306", BookmarkType.INFO, "Cat1", "My bookmark");
		programBuilder2.createBookmark("0x1002306", BookmarkType.INFO, "Cat1", "My bookmark");

		// 0x100230b: p1 and p2 have bookmarks with different categories.
		programBuilder1.createBookmark("0x100230b", BookmarkType.INFO, "Cat1", "My bookmark");
		programBuilder2.createBookmark("0x100230b", BookmarkType.INFO, "Stuff", "My bookmark");

		// 0x100230c: p1 has bookmark, p2 doesn't.
		programBuilder1.createBookmark("0x100230c", BookmarkType.INFO, "", "Something different");

		// 0x100230d: p2 has bookmark, p1 doesn't.
		programBuilder2.createBookmark("0x100230d", BookmarkType.INFO, "", "My bookmark");

		// 0x1002312: p1 and p2 have bookmarks with no category and different descriptions.
		programBuilder1.createBookmark("0x1002312", BookmarkType.INFO, "", "Something different");
		programBuilder2.createBookmark("0x1002312", BookmarkType.INFO, "", "My bookmark");

		// 0x1002318: p1 and p2 have bookmarks with same category and different descriptions.
		programBuilder1.createBookmark("0x1002318", BookmarkType.INFO, "stuff",
			"Something different");
		programBuilder2.createBookmark("0x1002318", BookmarkType.INFO, "stuff", "My bookmark");

		// 0x100231d: p1 and p2 have same NOTE bookmarks.
		programBuilder1.createBookmark("0x100231d", BookmarkType.NOTE, "stuff", "My bookmark");
		programBuilder2.createBookmark("0x100231d", BookmarkType.NOTE, "stuff", "My bookmark");

		// 0x1002323: p1 and p2 have same INFO bookmarks.
		programBuilder1.createBookmark("0x1002323", BookmarkType.INFO, "stuff", "My bookmark");
		programBuilder2.createBookmark("0x1002323", BookmarkType.INFO, "stuff", "My bookmark");

		programMerge =
			new ProgramMergeManager(p1, p2, new AddressSet(addr(0x1002306), addr(0x100232f)));
		AddressSet as = new AddressSet(addr(0x100230b), addr(0x100231c));
		programMerge.setDiffFilter(new ProgramDiffFilter(ProgramDiffFilter.BOOKMARK_DIFFS));
		programMerge.setMergeFilter(
			new ProgramMergeFilter(ProgramMergeFilter.BOOKMARKS, ProgramMergeFilter.REPLACE));
		//		printAddressSet(as);
		//		printAddressSet(programMerge.getFilteredDifferences());
		assertEquals(as, programMerge.getFilteredDifferences());
		programMerge.merge(as, TaskMonitor.DUMMY);
		assertEquals(new AddressSet(), programMerge.getFilteredDifferences());
	}
Test that programMerge can determine the bookmark user defined property
differences between Program1 and Program2.
Ghidra/Features/Base/src/test.slow/java/ghidra/program/util/ProgramMerge3Test.java