@Override
	public ProgramLocation getProgramLocation(int row, int col, ListingField listingField) {
		Object obj = listingField.getProxy().getObject();
		if (obj == null || !(obj instanceof CodeUnit)) {
			return null;
		}

		if (!(listingField instanceof XrefListingField)) {
			return null;
		}

		CodeUnit cu = (CodeUnit) obj;

		int[] cpath = null;
		if (cu instanceof Data) {
			cpath = ((Data) cu).getComponentPath();
		}

		XrefListingField field = (XrefListingField) listingField;
		FieldElement element = field.getFieldElement(row, col);
		RowColLocation loc = field.screenToDataLocation(row, col);
		if (element instanceof XrefFieldElement) {
			XrefFieldElement xrefElement = (XrefFieldElement) element;
			return getXRefLocation(xrefElement, cu, cpath, loc, row);
		}
		else if (element instanceof StrutFieldElement) {
			FieldElement baseElement = ((StrutFieldElement) element).getBaseType();
			if (baseElement instanceof XrefFieldElement) {
				XrefFieldElement xrefElement = (XrefFieldElement) baseElement;
				return getXRefLocation(xrefElement, cu, cpath, loc, row);
			}
		}

		String text = element.getText();
		if (MORE_XREFS_STRING.equals(text)) {
			return new XRefFieldLocation(cu.getProgram(), cu.getMinAddress(), cpath, null, row,
				loc.col());
		}

		return null;
	}
Constructs a new XRefFieldFactory based on the provider and model.

@param name the owner of this field factory
@param model the model that the field belongs to.
@param hlProvider the HightLightProvider.
@param displayOptions the Options for display properties.
@param fieldOptions the Options for field specific properties.
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/XRefFieldFactory.java