@Override
	protected Comparator<ROW_OBJECT> createSortComparator(int columnIndex) {

		Comparator<Object> columnComparator = createSortComparatorForColumn(columnIndex);
		if (columnComparator != null) {
			// the given column has its own comparator; wrap and us that
			return new ThreadedTableColumnComparator<>(this, columnIndex, columnComparator);
		}

		return new ThreadedTableColumnComparator<>(this, columnIndex, new DefaultColumnComparator(),
			new ThreadedBackupRowComparator<>(this, columnIndex));
	}
Returns the row object at the given index in the <b>unfiltered data</b> of this model;
null if the index is negative or larger than the list.  To search only for object
that are visible in the GUI, use {@link #getRowObject(int)}.

@param row The row index for which to get a row object
@return Returns the row object at the given index in the <b>unfiltered data</b> of this model;
        null if the index is negative or larger than the list.
@see #getRowObject(int)
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/ThreadedTableModel.java