private void selectRow(TableModel model, final int row) {
		Swing.runLater(() -> {

			if (checkForBusy(model)) {
				// Selecting rows whilst the model is processing deletes will cause the
				// selection to be lost.  So, wait until the model settles down.
				GTimer.scheduleRunnable(500, () -> selectRow(model, row));
				return;
			}

			int rowCount = model.getRowCount();
			if (rowCount == 0) {
				return;
			}

			if (row < 0) {
				return; // this can happen during disposal
			}

			int selectRow = row;
			if (row >= rowCount) {
				selectRow = rowCount - 1;
			}

			table.setRowSelectionInterval(selectRow, selectRow);
		});
	}
A special method that triggers the registration of this action's shared/dummy keybinding.
This is needed for plugins that produce transient component providers that do not exist
at the time the plugin is loaded.

@param tool the tool whose options will updated with a dummy keybinding
@param owner the owner of the action that may be installed
Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java