private boolean containsUnassociatedTypes(Category cat, TaskMonitor monitor)
			throws CancelledException {

		DataType[] types = cat.getDataTypes();
		for (DataType dt : types) {
			monitor.checkCancelled();
			if (isLocal(dt)) {
				return true; // local means it is not associated
			}
		}

		Category[] categories = cat.getCategories();
		for (Category child : categories) {
			monitor.checkCancelled();
			if (containsUnassociatedTypes(child, monitor)) {
				return true;
			}
		}

		return false;
	}
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