private void showUnresolvedFixups() {
		if (fixUpList.isEmpty()) {
			return;
		}
		int count = 0;
		boolean logOnly = false;
		StringBuffer sb = new StringBuffer();
		sb.append("The following data types failed to properly resolve, possibly due\n" +
			"to missing dependencies (" + fixUpList.size() + " data type failures):\n");
		for (FixUpInfo info : fixUpList) {
			if (!logOnly && count++ == 30) {
				sb.append("List has been truncated.  See log for additional data type failures");
				String msg = sb.toString();
				MergeManager.showBlockingError("Unresolved Data Types and Components", msg);
				logOnly = true;
				sb = new StringBuffer();
				sb.append("Continuation of data type failure listing:\n");
			}

			DataTypeManager dtm = info.getDataTypeManager();
			DataType dt = dtm.getDataType(info.id);
			DataType compDt = dtm.getDataType(info.compID);
			sb.append("   ");
			String kind = getKind(dt);
			if (kind != null) {
				sb.append(kind);
				sb.append(" ");
			}
			sb.append(dt.getDisplayName());
			sb.append(", ");
			if (info.index < 0) {
				if (dt instanceof FunctionDefinition) {
					sb.append("return-type");
				}
				else {
					sb.append("dependency");
				}
			}
			else {
				if (dt instanceof FunctionDefinition) {
					sb.append("param-");
					sb.append(info.index);
				}
				else if (dt instanceof Union) {
					sb.append("component-");
					sb.append(info.index);
				}
				else if (dt instanceof Structure) {
					Structure resultStruct = (Structure) info.ht.get(info.id);
					sb.append("component-");
					sb.append(info.index);
					if (!resultStruct.isPackingEnabled()) {
						sb.append(", offset-");
						sb.append("0x");
						sb.append(Integer.toHexString(info.offset));
					}
				}
				else {
					sb.append("index-"); // unknown use case
					sb.append(info.index);
				}

			}
			sb.append(": ");
			sb.append(compDt.getDisplayName());
			sb.append("\n");
		}

		// TODO: Use display with scrolling message area
		// TODO: Would be could to allow messages to be saved to a file

		if (logOnly) {
			Msg.error(this, sb.toString());
		}
		else {
			String msg = sb.toString();
			MergeManager.showBlockingError("Unresolved Data Types and Components", msg);
		}
	}
Process conflicts for categories.
@throws CancelledException task was cancelled
Ghidra/Features/Base/src/main/java/ghidra/app/merge/datatypes/DataTypeMergeManager.java