private void setupConflictsPanel(ListingMergePanel listingPanel, String propertyName,
			Address addr, ChangeListener changeListener) {

		// Initialize the conflict panel.
		PropertyMap<?> latestMap = latestPMM.getPropertyMap(propertyName);
		PropertyMap<?> myMap = myPMM.getPropertyMap(propertyName);
		PropertyMap<?> originalMap = originalPMM.getPropertyMap(propertyName);
		Object latestObj = latestMap != null ? latestMap.get(addr) : null;
		Object myObj = myMap != null ? myMap.get(addr) : null;
		Object originalObj = originalMap != null ? originalMap.get(addr) : null;

		// Get an empty conflict panel.
		if (conflictPanel != null) {
			conflictPanel.clear();
		}
		else {
			conflictPanel = new VerticalChoicesPanel();
			currentConflictPanel = conflictPanel;
		}
		// Add the conflict information to the conflict panel.
		conflictPanel.setConflictType(propertyName + " property");
		conflictPanel.setUseForAll(false);
		conflictPanel.setTitle(getConflictType());

		String latest = createButtonText(LATEST_TITLE, propertyName, latestObj);
		String my = createButtonText(MY_TITLE, propertyName, myObj);
		String original = createButtonText(ORIGINAL_TITLE, propertyName, originalObj);
		String latestStr =
			(latestObj != null) ? ConflictUtility.getTruncatedHTMLString(latestObj.toString(),
				TRUNCATE_LENGTH) : ConflictUtility.NO_VALUE;
		String myStr =
			(myObj != null) ? ConflictUtility.getTruncatedHTMLString(myObj.toString(),
				TRUNCATE_LENGTH) : ConflictUtility.NO_VALUE;
		String originalStr =
			(originalObj != null) ? ConflictUtility.getTruncatedHTMLString(originalObj.toString(),
				TRUNCATE_LENGTH) : ConflictUtility.NO_VALUE;

		conflictPanel.setRowHeader(new String[] { "Option", "'" + propertyName + "' Property" });
		conflictPanel.addRadioButtonRow(new String[] { latest, latestStr }, LATEST_BUTTON_NAME,
			KEEP_LATEST, changeListener);
		conflictPanel.addRadioButtonRow(new String[] { my, myStr }, CHECKED_OUT_BUTTON_NAME,
			KEEP_MY, changeListener);
		conflictPanel.addRadioButtonRow(new String[] { original, originalStr },
			ORIGINAL_BUTTON_NAME, KEEP_ORIGINAL, changeListener);

		listingPanel.setBottomComponent(conflictPanel);
	}
Creates a conflict panel and adds it to the indicated listing panel.

@param listingPanel the merge listing panel
@param propertyName the name of the property in conflict.
@param addr the address where the property is in conflict.
@param changeListener the changeListener that will process the user's selection
when it is made on the conflict panel.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/UserDefinedPropertyMerger.java