private void setupConflictsPanel(ListingMergePanel listingPanel, Address addr, Long tagID,
			ChangeListener changeListener) {

		if (conflictPanel == null) {
			conflictPanel = new VerticalChoicesPanel();
			currentConflictPanel = conflictPanel;
		}
		else {
			conflictPanel.clear();
		}

		conflictPanel.setTitle("Function Tags");
		conflictPanel.setConflictType("Function Tags");

		try {
			FunctionTag originalTag = getTag(tagID, originalPgm);
			String original = originalTag == null ? "<tag deleted>" : originalTag.getName();

			FunctionTag latestTag = getTag(tagID, latestPgm);
			String latest = latestTag == null ? "<tag deleted>" : latestTag.getName();

			FunctionTag myTag = getTag(tagID, myPgm);
			String my = myTag == null ? "<tag deleted>" : myTag.getName();

			conflictPanel.setRowHeader(new String[] { "Option", "Function Tags" });
			String text =
				"Function Tag conflict @ address :" + ConflictUtility.getAddressString(addr);
			conflictPanel.setHeader(text);

			conflictPanel.setRowHeader(getFunctionTagInfo(-1, null));
			conflictPanel.addRadioButtonRow(getFunctionTagInfo(LATEST, latest), LATEST_BUTTON_NAME,
				KEEP_LATEST, changeListener);
			conflictPanel.addRadioButtonRow(getFunctionTagInfo(MY, my), CHECKED_OUT_BUTTON_NAME,
				KEEP_MY, changeListener);
			conflictPanel.addRadioButtonRow(getFunctionTagInfo(ORIGINAL, original),
				ORIGINAL_BUTTON_NAME, KEEP_ORIGINAL, changeListener);
		}
		catch (IOException e) {
			Msg.error(this, "Error creating conflict dialog for " + tagID + " at address " + addr);
		}
	}
Sets up the conflict panel for SINGLE conflict. This will be a standard listing merge 
panel showing all four programs (Latest, My, Original, Result). Choices for 
resolving the conflict will appear at the bottom.

@param listingPanel the main panel
@param addr 
@param tagID
@param changeListener
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/FunctionTagListingMerger.java