private boolean containsUnassociatedTypes(TaskMonitor monitor) throws CancelledException {

		monitor.setMessage("Checking for types to associate");
		monitor.initialize(copyMoveNodes.size());
		for (GTreeNode node : copyMoveNodes) {
			monitor.checkCancelled();

			if (node instanceof DataTypeNode) {
				DataType dt = ((DataTypeNode) node).getDataType();
				if (isLocal(dt)) {
					return true; // local means it is not associated
				}
			}
			else if (node instanceof CategoryNode) {
				if (containsUnassociatedTypes(((CategoryNode) node).getCategory(), monitor)) {
					return true;
				}
			}

			monitor.incrementProgress(1);
		}

		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