@Override
	public void categoryMoved(DataTypeManager dtm, CategoryPath oldPath, CategoryPath newPath) {
		if (dtm != originalDTM) {
			throw new AssertException("Listener only supports original DTM");
		}
		if (!isLoaded()) {
			return;
		}
		if (!viewDTM.containsCategory(oldPath)) {
			return;
		}
		Category oldCat = viewDTM.getCategory(oldPath);
		if (oldCat == null) {
			return;
		}
		CategoryPath parent = newPath.getParent();
		viewDTM.withTransaction("Category Moved", () -> {
			viewDTM.clearUndoOnChange();
			viewDTM.createCategory(parent);
			Category newCat = viewDTM.getCategory(parent);
			try {
				newCat.moveCategory(oldCat, TaskMonitor.DUMMY);
			}
			catch (DuplicateNameException e) {
				Msg.error(this, "Unexpected Exception: " + e.getMessage(), e);
			}
		});
		if (originalDataTypePath.isAncestor(oldPath)) {
			changeOriginalDataTypeCategory(oldPath, newPath);
		}
		compositeInfoChanged();
	}
Determines the full path name for the composite data type based on the original composite
and original category.
@return the full path name
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeViewerModel.java