@Override
	public void moveDataType(DataType movedDataType, DataTypeConflictHandler handler)
			throws DataTypeDependencyException {
		mgr.lock.acquire();
		try {
			checkDeleted();
			CategoryPath path = getCategoryPath();
			if (handler == null) {
				handler = DataTypeConflictHandler.DEFAULT_HANDLER;
			}
			if (movedDataType.getDataTypeManager() != mgr) {
				throw new IllegalArgumentException("Given dataType not in this data type manager");
			}
			DataType existing = getDataType(movedDataType.getName());
			if (movedDataType == existing) {
				return;
			}
			if (existing != null) {
				ConflictResult result = handler.resolveConflict(movedDataType, existing);
				if (result == ConflictResult.REPLACE_EXISTING) { // replace existing dt with new dt.
					mgr.replaceDataType(existing, movedDataType, true);
				}
				else if (result == ConflictResult.USE_EXISTING) {
					mgr.replaceDataType(movedDataType, existing, false);
				}
				else { // both dataTypes remain
					movedDataType.setNameAndCategory(path,
						mgr.getUnusedConflictName(path, movedDataType));
				}
			}
			else {
				movedDataType.setCategoryPath(path);
			}
		}
		catch (InvalidNameException e) {
			throw new AssertException(e); // can't happen
		}
		catch (DuplicateNameException e) {
			throw new AssertException(e); // can't happen?
		}
		finally {
			mgr.lock.release();
		}
	}
@see ghidra.program.model.data.Category#moveDataType(ghidra.program.model.data.DataType, ghidra.program.model.data.DataTypeConflictHandler)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/CategoryDB.java