@Override
	public FieldLocation getFieldLocation(ListingField bf, BigInteger index, int fieldNum,
			ProgramLocation loc) {

		if (!(loc instanceof VariableCommentFieldLocation)) {
			return null;
		}

		Object obj = bf.getProxy().getObject();
		if (obj instanceof Variable) {
			Variable sv = (Variable) obj;
			VariableCommentFieldLocation varCommentLoc = (VariableCommentFieldLocation) loc;
			if (varCommentLoc.isLocationFor(sv)) {
				int col = varCommentLoc.getCharOffset();
				ListingTextField btf = (ListingTextField) bf;
				int row = 0;
				for (; row < btf.getNumRows(); ++row) {
					FieldElement element = ((ListingTextField) bf).getFieldElement(row, 0);
					int len = element.length();
					if (len > col) {
						break;
					}
					col -= len;
				}
				return new FieldLocation(index, fieldNum, row, col);
			}
		}

		return null;
	}
@see ghidra.app.util.viewer.field.FieldFactory#getFieldLocation(ghidra.app.util.viewer.field.ListingField, BigInteger, int, ghidra.program.util.ProgramLocation)
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/VariableCommentFieldFactory.java