@Test
	public void testDataTypeConflicts() throws Exception {
		DataTypeConflictHandler handler =
			DataTypeConflictHandler.REPLACE_EMPTY_STRUCTS_OR_RENAME_AND_ADD_HANDLER;

		// First set
		Composite testStruct1 = createComposite(dtm, "outer");
		Pointer pointer1 = new PointerDataType(testStruct1, -1, dtm);

		FunctionDefinitionDataType fn1 =
			new FunctionDefinitionDataType(CategoryPath.ROOT, "fn1", dtm);
		fn1.setReturnType(pointer1);
		fn1.setCallingConvention(CompilerSpec.CALLING_CONVENTION_cdecl);
		fn1.setArguments(new ParameterDefinition[0]);

		Composite internalStruct1 = createComposite(dtm, "inner");
		Pointer internalPointer1 = new PointerDataType(internalStruct1, -1, dtm);

		fillComposite(testStruct1, TaskMonitor.DUMMY, internalPointer1);
		fillComposite(internalStruct1, TaskMonitor.DUMMY, null);

		// Second set
		Composite testStruct2 = createComposite(dtm, "outer");
		Pointer pointer2 = new PointerDataType(testStruct2, -1, dtm);

		FunctionDefinitionDataType fn2 =
			new FunctionDefinitionDataType(CategoryPath.ROOT, "fn2", dtm);
		fn2.setReturnType(pointer2);
		fn2.setCallingConvention(CompilerSpec.CALLING_CONVENTION_cdecl);
		fn2.setArguments(new ParameterDefinition[0]);

		Composite internalStruct2 = createComposite(dtm, "inner");
		Pointer internalPointer2 = new PointerDataType(internalStruct2, -1, dtm);

		fillComposite(testStruct2, TaskMonitor.DUMMY, internalPointer2);
//		fillComposite(internalStruct2, monitor, null); // Without this line, we get a conflict

		// Resolve
		DataType t1 = dtm.resolve(testStruct1, handler);
		DataType f1 = dtm.resolve(fn1, handler);

		DataType t2 = dtm.resolve(testStruct2, handler);
		DataType f2 = dtm.resolve(fn2, handler);

		System.out.println(t1.toString());
		System.out.println(f1.toString());
		System.out.println(t2.toString());
		System.out.println(f2.toString());
	}
Tests for the {@link DataTypeConflictHandler conflict handler} stuff.
Ghidra/Features/PDB/src/test/java/ghidra/app/util/pdb/pdbapplicator/ConflictHandler2Test.java