private void repairSelection() {
		lastSelectionUpdateTimeStamp = System.currentTimeMillis();

		if (selectionHistoryExpired(lastSelectionUpdateTimeStamp)) {
			return;
		}

		// the reselect sometimes needs to be done after the table has rebuilt itself
		// after this call has been made
		final long currentRequestTimeStamp = lastSelectionUpdateTimeStamp;
		SwingUtilities.invokeLater(() -> {
			// re-check the assumptions above to see if anyone has changed the selection
			// while we were queued-up
			trace("\trepair selection swing later - " +
				getTimestampString(lastSelectionUpdateTimeStamp));
			if (selectionHistoryExpired(currentRequestTimeStamp)) {
				return;
			}

			int[] updatedViewRows = translateSavedObjectSelectionToRowIndexes();
			selectRows(updatedViewRows);
		});
	}
checks to see if we are ignoring selection changes AND will reset the ignore state
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/RowObjectSelectionManager.java