private void adjustIDMapsForRemove(ExternalLocation[] externalLocations, int chosenExternal) {

		long originalID =
			(externalLocations[ORIGINAL] != null) ? externalLocations[ORIGINAL].getSymbol().getID()
					: -1;
		if (originalID != -1) {
			originalResolvedSymbols.put(originalID, -1);
		}
		switch (chosenExternal) {
			case LATEST:
				long myID = resolveMyIDFromOriginalID(originalID);
				myResolvedSymbols.put(myID, -1);
				break;
			case MY:
				long latestID = resolveLatestIDFromOriginalID(originalID);
				latestResolvedSymbols.put(latestID, -1);
				break;
			case ORIGINAL:
				long latestID2 = (externalLocations[LATEST] != null)
						? externalLocations[LATEST].getSymbol().getID()
						: -1;
				if (latestID2 != -1) {
					latestResolvedSymbols.put(latestID2, -1);
				}
				long myID2 =
					(externalLocations[MY] != null) ? externalLocations[MY].getSymbol().getID()
							: -1;
				if (myID2 != -1) {
					myResolvedSymbols.put(myID2, -1);
				}
				break;
			default:
				Msg.error(this, "    ERROR :  UNRECOGNIZED chosenExternal=" + chosenExternal + ".");
				return;
		}
	}
Merges the entire external so that it will match the external as it is in the program
indicated by the chosen option.
@param externalLocations the external locations for the external in Latest, My, and Original.
(Any of these locations can be null if the external is not in that program.)
@param chosenConflictOption ListingMergeConstant (KEEP_LATEST, KEEP_MY, KEEP_ORIGINAL)
indicating which program the resulting external should become.
@param monitor the task monitor for feedback and cancelling the merge.
@throws CancelledException if the user cancels the merge.
@throws InvalidInputException
@throws DuplicateNameException
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalFunctionMerger.java