private void keepOtherOrCreateTree(ProgramModule origRoot, ProgramModule sourceRoot, ProgramModule destRoot,
			int conflictIndex) throws CancelledException {

		String sourceTreeName = sourceRoot.getTreeName();
		String destTreeName = destRoot.getTreeName();
		String origTreeName = origRoot.getTreeName();

		boolean destChanged = treeStructureChanged(origRoot, destRoot);

		if (bothStructuresChangedChoice == ASK_USER && conflictOption == ASK_USER &&
			mergeManager != null) {
			// display prompt that has to choices: KEEP OTHER (lose my changes) 
			// or Create a new tree (if there is a name conflict, append
			// the user's name to the tree name)
			// or use original (put the original tree back in and lose my changes)
			showMergePanel(CONFLICTS_PANEL_ID, conflictIndex, destTreeName, sourceTreeName,
				origTreeName, nameChanged(origRoot, destTreeName), destChanged,
				nameChanged(origRoot, sourceTreeName), treeStructureChanged(origRoot, sourceRoot));

			// block until we get a response

			if (conflictOption == CANCELED) {
				throw new CancelledException();
			}
			// If the "Use For All" check box is selected 
			// then save the option chosen for this conflict type.
			if (mergePanel.getUseForAll()) {
				bothStructuresChangedChoice = conflictOption;
			}
		}
		int optionToUse =
			(bothStructuresChangedChoice == ASK_USER) ? conflictOption
					: bothStructuresChangedChoice;
		switch (optionToUse) {
			case KEEP_OTHER_NAME:
				// no action required
				break;
			case ADD_NEW_TREE:
			case RENAME_PRIVATE:
				createTree(resultListing, getUniqueTreeName(sourceTreeName), sourceRoot);
				break;
			case ORIGINAL_NAME:
				if (destChanged) {
					createTree(resultListing, getUniqueTreeName(origTreeName), origRoot);
				}
				else {
					try {
						resultListing.renameTree(destTreeName, getUniqueTreeName(origTreeName));
					}
					catch (DuplicateNameException e) {
					}
				}
				break;
		}
		conflictOption = ASK_USER;
	}
Covers case 6: dest content changed, source content changed;
       case 7: dest name change and content changed, source name changed and content changed
       case 8: dest name and content changed, source content changed
       case 9: dest content changed, source name and content changed
@throws CancelledException
Ghidra/Features/Base/src/main/java/ghidra/app/merge/tree/ProgramTreeMergeManager.java