private Map<Object, List<Integer>> mapAllTableRowObjectToIndexes() {
		// gather the indexes...
		// Note: we use a list of row values for each object because the table may contain
		// duplicate entries, which we have to keep at separate indices in order to restore selection
		int rowCount = modelAdapter.getRowCount();
		if (rowCount > ARTIFICIAL_ROW_COUNT_THRESHOLD) {
			return Collections.emptyMap();
		}

		Map<Object, List<Integer>> objectRowMap =
			LazyMap.lazyMap(new HashMap<>(), () -> new ArrayList<>());
		for (int i = 0; i < rowCount; i++) {
			Object object = modelAdapter.getRowObject(i);
			List<Integer> integerList = objectRowMap.get(object);
			integerList.add(i);
			objectRowMap.put(object, integerList);
		}

		return objectRowMap;
	}
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