@SuppressWarnings("unused")
	private void copyArchive(Archive originalArchive, Archive newArchive, TaskMonitor monitor) {
		DataTypeManager originalManager = originalArchive.getDataTypeManager();
		DataTypeManager newManager = newArchive.getDataTypeManager();

		Category originalRoot = originalManager.getRootCategory();
		Category newRoot = newManager.getRootCategory();
		Category[] categories = originalRoot.getCategories();

		monitor.setMessage(
			"Copy Archive " + originalArchive.getName() + " to " + newArchive.getName());
		monitor.initialize(categories.length);

		int transactionID = newManager.startTransaction("Copy Archive");
		try {
			for (Category category : categories) {
				newRoot.copyCategory(category, null, monitor);
				monitor.incrementProgress(1);
			}
			DataType[] dataTypes = originalRoot.getDataTypes();
			for (DataType type : dataTypes) {
				if (monitor.isCancelled()) {
					return;
				}
				newRoot.addDataType(type, null);
			}
		}
		finally {
			newManager.endTransaction(transactionID, true);
		}
	}
@return all archive search paths (both enabled and disabled are included)
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/archive/DataTypeManagerHandler.java