public static DataType getBaseType(DataType dt) {
		if (dt instanceof Array) {
			return getBaseType(((Array) dt).getDataType());
		}
		else if (dt instanceof Pointer) {
			DataType baseDataType = ((Pointer) dt).getDataType();
			if (baseDataType != null) {
				return getBaseType(baseDataType);
			}
		}
		else if (dt instanceof TypeDef) {
			DataType baseDataType = ((TypeDef) dt).getBaseDataType();
			return getBaseType(baseDataType);
		}
		return dt;
	}
Scan this reference for any data type matches.
<p>
The {@code fieldName} is optional.  If not included, then only data type matches will
be sought.  If it is included, then a match is only included when it is a reference
to the given data type where that type is being accessed by the given field name.

@param dt the data type to find
@param fieldMatcher the optional field matcher used to restrict matches.
@param results the accumulator object into which will be placed any matches
Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/extension/datatype/finder/DecompilerReference.java