private void installListSelectionListener() {
		ListSelectionModel oldSelectionModel = table.getSelectionModel();
		if (!(oldSelectionModel instanceof DefaultListSelectionModel)) {
			Msg.debug(this,
				"Don't know how to extract listeners from a " +
					"ListSelectionModel that is not a DefaultListSelectionModel.  " +
					"Any listeners installed on this model before installing this " +
					"TableFilterPanel will be lost!");
		}
		else {
			DefaultListSelectionModel defaultListSelectionModel =
				(DefaultListSelectionModel) oldSelectionModel;
			ListSelectionListener[] installedListeners =
				defaultListSelectionModel.getListSelectionListeners();

			for (ListSelectionListener listener : installedListeners) {
				addListSelectionListener(listener);
			}
		}

		// so it isn't added more than once, as it adds it again when we set it on the table
		removeListSelectionListener(table);
		table.setSelectionModel(this);
	}
A flag used to track when updates or requests to update the selection are made.  This is
used to throw away requests to repair selections that have been superseded by new requests.
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/RowObjectSelectionManager.java