@Override
	Highlight[] getHighlights(String text, Object object,
			Class<? extends FieldFactory> fieldFactoryClass, Color highlightColor) {

		Address currentAddress = getAddressForHighlightObject(object);
		if (!isInAddresses(currentAddress)) {
			return EMPTY_HIGHLIGHTS;
		}

		if (MnemonicFieldFactory.class.isAssignableFrom(fieldFactoryClass) &&
			(object instanceof Data)) {
			// compare against the underlying datatype, since the display text is different
			Data data = (Data) object;
			DataType otherBaseDataType = ReferenceUtils.getBaseDataType(data.getDataType());
			if (otherBaseDataType.isEquivalent(baseDataType)) {
				Highlight[] dtHighlights = getMnemonicDataTypeHighlights(text, highlightColor);
				return dtHighlights;
			}
		}
		else if (MnemonicFieldFactory.class.isAssignableFrom(fieldFactoryClass) ||
			OperandFieldFactory.class.isAssignableFrom(fieldFactoryClass) ||
			VariableTypeFieldFactory.class.isAssignableFrom(fieldFactoryClass)) {

			String highlightText = getHighlightStringForDataTypeName(text);
			if (highlightText != null) {
				return new Highlight[] {
					new Highlight(0, highlightText.length() - 1, highlightColor) };
			}
		}
		else if (FunctionSignatureFieldFactory.class.isAssignableFrom(fieldFactoryClass)) {
			// pull out the matching pieces of the data type
			List<Highlight> list = new ArrayList<>();

			Function function = (Function) object;
			FieldStringInfo returnTypeStringInfo =
				FunctionUtils.getFunctionReturnTypeStringInfo(function, text);
			String returnTypeString = returnTypeStringInfo.getFieldString();
			if (label.equals(returnTypeString)) {
				int offset = returnTypeStringInfo.getOffset();
				list.add(
					new Highlight(offset, offset + returnTypeString.length() - 1, highlightColor));
			}

			FieldStringInfo[] parameterStringInfos =
				FunctionUtils.getFunctionParameterStringInfos(function, text);
			for (FieldStringInfo info : parameterStringInfos) {
				String paramString = info.getFieldString();
				String highlightText = getHighlightStringForParameterDeclaration(paramString);
				if (highlightText != null) {
					int offset = info.getOffset();
					int length = offset + highlightText.length() - 1;
					list.add(new Highlight(offset, length, highlightColor));
				}
			}

			return list.toArray(new Highlight[list.size()]);
		}

		return EMPTY_HIGHLIGHTS;
	}
The base data type that this location descriptor describes (this may be the same as the
original data type.
@return the type.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/locationreferences/DataTypeLocationDescriptor.java