@Override
	public ProgramLocation getProgramLocation(int modelRow, int modelColumn) {
		Program p = getProgram();
		if (p == null) {
			return null; // we've been disposed
		}

		DynamicTableColumn<MemoryMatch, ?, ?> column = getColumn(modelColumn);
		Class<?> columnClass = column.getClass();
		if (column instanceof MappedTableColumn mappedColumn) {
			columnClass = mappedColumn.getMappedColumnClass();
		}
		if (columnClass == AddressTableColumn.class || columnClass == MatchBytesColumn.class ||
			columnClass == MatchValueColumn.class) {
			return new BytesFieldLocation(p, getAddress(modelRow));
		}

		return super.getProgramLocation(modelRow, modelColumn);
	}
Table model for memory search results.
Ghidra/Features/Base/src/main/java/ghidra/features/base/memsearch/gui/MemoryMatchTableModel.java