### Question:
TableChooserDialog extends DialogComponentProvider implements NavigatableRemovalListener { public void selectRows(int... rows) { ListSelectionModel selectionModel = table.getSelectionModel(); for (int row : rows) { selectionModel.addSelectionInterval(row, row); } } TableChooserDialog(PluginTool tool, TableChooserExecutor executor, Program program,
			String title, Navigatable navigatable, boolean isModal);  TableChooserDialog(PluginTool tool, TableChooserExecutor executor, Program program,
			String title, Navigatable navigatable); void setClosedListener(Callback callback); void add(AddressableRowObject rowObject); void remove(AddressableRowObject rowObject); void show(); @Override void close(); boolean isBusy(); void addCustomColumn(ColumnDisplay<?> columnDisplay); @Override void navigatableRemoved(Navigatable nav); void setMessage(String message); int getRowCount(); void clearSelection(); void selectRows(int... rows); int[] getSelectedRows(); List<AddressableRowObject> getSelectedRowObjects();  }### Answer:
@Test public void testItemsRepeatedlyRequestedToBeProcessed() { List<TestStubRowObject> selected1 = selectRows(0, 1, 2); CountDownLatch startLatch = new CountDownLatch(1); CountDownLatch continueLatch = new CountDownLatch(1); testDecision = r -> { startLatch.countDown(); waitFor(continueLatch); return true; }; pressExecuteButton(); waitFor(startLatch); List<TestStubRowObject> selected2 = selectRows(1); pressExecuteButton(); continueLatch.countDown(); waitForDialog(); assertNotInDialog(selected1); assertNotInDialog(selected2); assertOnlyExecutedOnce(selected2); }