private void compare(Union pre, Union post) {
		Map<String, DataTypeComponent> postCompsByName = new HashMap<>();
		for (DataTypeComponent dtc : post.getComponents()) {
			if (dtc.getFieldName() != null) {
				postCompsByName.put(dtc.getFieldName(), dtc);
			}
		}
		for (DataTypeComponent preDTC : pre.getComponents()) {
			DataTypeComponent postDTC = postCompsByName.get(preDTC.getFieldName());
			if (postDTC != null) {
				compare(preDTC.getDataType(), postDTC.getDataType());
			}
		}
	}
Object instance identity map used to prevent recursive loops when following
DataType pointers and such.  DataType path/name mapping can't be used because
there is no guarantee that impl DataType's have unique names.
<p>
Using a Map as a Set because there is no IdentityHashSet. (the value of the map entry
is not used, just the key set)
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/DataTypeGraphComparator.java