private void fireTableDataChangedAndChangeSelection(final int row) {
		runSwing(() -> {
			AbstractSortedTableModel<?> abstractModel =
				(AbstractSortedTableModel<?>) table.getModel();
			abstractModel.fireTableDataChanged();

			// change the selection here...we know that the SelectionManager will try to
			// repair selection in an invoke later, so if we change the selection here, then
			// it should invalidate the selection that is posted to be repaired as a result
			// of the preceding call to fireTableDataChanged()
			ListSelectionModel selectionModel = table.getSelectionModel();
			selectionModel.setSelectionInterval(row, row);
		});

	}
Make sure that either the two given rows are an exact match, or that the row objects that
represent each row are equal()
Ghidra/Features/Base/src/test.slow/java/docking/widgets/table/SelectionManagerTest.java