private void associateDataTypes(TaskMonitor monitor) throws CancelledException {

		if (!promptToAssociateTypes(monitor)) {
			return;
		}

		monitor.initialize(copyMoveNodes.size());

		SourceArchive destination = destinationArchive.getDataTypeManager().getLocalSourceArchive();
		DataTypeManager dtm = sourceArchive.getDataTypeManager();
		int txId = dtm.startTransaction("Associate Data Types");
		try {
			for (GTreeNode node : copyMoveNodes) {
				monitor.checkCancelled();

				if (node instanceof DataTypeNode) {
					DataType dt = ((DataTypeNode) node).getDataType();
					associateDataType(dt, dtm, destination);
				}
				else if (node instanceof CategoryNode) {
					Category cat = ((CategoryNode) node).getCategory();
					associateDataTypes(cat, dtm, destination);
				}

				monitor.incrementProgress(1);
			}
		}
		finally {
			dtm.endTransaction(txId, true);
		}
	}
Any types being newly copied/moved to a suitable archive are eligible for 'association',
which means changes between the two archives will be tracked.  True, the default, signals to
prompt before associating types; false signals not to prompt the user, but to always
associate types.

@param prompt true to prompt; false to not prompt
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/util/DataTypeTreeCopyMoveTask.java