private void moveCategory(Category newParent, Category category) {
		Category[] cats = newParent.getCategories();
		// make sure category is not already in newParent
		for (Category cat : cats) {
			if (category == cat) {
				return;
			}
		}
		String newName = category.getName();
		String baseName = newName;
		int index = newName.indexOf(DataType.CONFLICT_SUFFIX);
		if (index > 0) {
			baseName = newName.substring(0, index);
		}
		int oneUpNumber = 0;
		while (true) {
			try {

				if (newParent.getCategory(newName) == null) {
					newParent.moveCategory(category, currentMonitor);
					return;
				}
				++oneUpNumber;
				newName = baseName + DataType.CONFLICT_SUFFIX + oneUpNumber;
			}
			catch (DuplicateNameException e) {
				throw new AssertException("Got DuplicateNameException");
			}
			catch (IllegalArgumentException e) {
				// cannot move category
				return;
			}
		}
	}
Process categories that were deleted in MY program, but are not
conflicts, i.e., not renamed, moved, or deleted in LATEST.
@param id category ID
Ghidra/Features/Base/src/main/java/ghidra/app/merge/datatypes/DataTypeMergeManager.java