private void checkOriginalNoteBookmark(TaskMonitor monitor, Address addr,
			Bookmark currentBookmark) throws CancelledException {
		String originalType = currentBookmark.getTypeString();
		String originalCategory = currentBookmark.getCategory();
		String originalComment = currentBookmark.getComment();
		// We only allow one NOTE bookmark.
		Bookmark[] my = myBookmarkMgr.getBookmarks(addr, originalType);
		if (my.length > 1) {
			throw new AssertException(
				"Error in CHECKED OUT program - Shouldn't be multiple notes at a single address. Address=" +
					addr.toString());
		}
		Bookmark[] latest = latestBookmarkMgr.getBookmarks(addr, originalType);
		if (latest.length > 1) {
			throw new AssertException(
				"Error in LATEST checked in program - Shouldn't be multiple notes at a single address. Address=" +
					addr.toString());
		}

		if (my.length == 0) {
			// Deleted in MY
			if (latest.length == 1) {
				String latestCategory = latest[0].getCategory();
				String latestComment = latest[0].getComment();
				if (!SystemUtilities.isEqual(originalCategory, latestCategory) ||
					!SystemUtilities.isEqual(originalComment, latestComment)) {
					// MY deleted and LATEST changed, so conflict.
					addConflict(addr, originalType, null);
				}
				else {
					// MY deleted and LATEST didn't.
					merge(addr, originalType, null, KEEP_MY, monitor);
				}
			}
		}
		else if (my.length == 1) {
			String myCategory = my[0].getCategory();
			String myComment = my[0].getComment();
			if (!SystemUtilities.isEqual(originalCategory, myCategory) ||
				!SystemUtilities.isEqual(originalComment, myComment)) {
				// Changed in MY
				if (latest.length == 0) {
					// MY changed and LATEST deleted, so conflict.
					addConflict(addr, originalType, null);
				}
				else if (latest.length == 1) {
					String latestCategory = latest[0].getCategory();
					String latestComment = latest[0].getComment();
					if ((!SystemUtilities.isEqual(originalCategory, latestCategory) ||
						!SystemUtilities.isEqual(originalComment, latestComment)) &&
						(!SystemUtilities.isEqual(myCategory, latestCategory) ||
							!SystemUtilities.isEqual(myComment, latestComment))) {
						// MY changed and LATEST changed differently
						addConflict(addr, originalType, null);
					}
					else {
						// MY changed and LATEST didn't.
						merge(addr, originalType, null, KEEP_MY, monitor);
					}
				}
			}
		}
	}
Constructs a comments merger.
@param listingMergeMgr the listing merge manager that owns this merger.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/BookmarkMerger.java