private void resolveAddConflict(ExternalLocation[] externalLocations, int choice,
			TaskMonitor monitor) throws CancelledException {

		// resolve based on user choice (KEEP_LATEST_ADD, KEEP_MY_ADD, KEEP_BOTH_ADDS, or MERGE_BOTH_ADDS.
		switch (choice) {
			case KEEP_LATEST_ADD:
				// RESULT already has LATEST so no external to add.
				adjustIDMapsForReplace(externalLocations, LATEST);
				break;
			case KEEP_MY_ADD:
				// Replace RESULT with MY external.
				merge(externalLocations, KEEP_MY, monitor);
				adjustIDMapsForReplace(externalLocations, MY);
				break;
			case KEEP_BOTH_ADDS:
				// Add MY external giving it a new name if necessary.
				// Add the references from MY to the newly created MY in RESULT.
				ExternalLocation resultExternalLocation =
					addMyExternal(externalLocations[MY], monitor);
				adjustIDMapsForAdd(externalLocations, resultExternalLocation, MY);
				break;
			case MERGE_BOTH_ADDS:
				// Merge LATEST and MY into the RESULT external.
				mergeLatestAndMyForAddConflict(externalLocations, monitor);
				adjustIDMapsForReplace(externalLocations, RESULT);
				break;
			default:
				String message =
					"Resolving External ADD conflict. " + choice + " is not a valid choice.";
				throw new AssertException(message);
		}

	}
Gets the external locations (result, latest, my, original) for the specified MY program
external space address.<br>
NOTE: Be careful where you call this method from. It is intended to be used for external
location changes only (not for Adds). It gets the ORIGINAL based on MY and then LATEST and
RESULT based on the ORIGINAL.
@param myAddress the MY program external space address for MY external location
@return all four program's external locations.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalFunctionMerger.java