List<Object[]> (@NotNull JTable table, @Nullable ItemChecker applyable) { final TableModel model = table.getModel(); if (!(model instanceof ItemRemovable itemRemovable)) { throw new RuntimeException("model must be instance of ItemRemovable"); } if (table.getSelectionModel().isSelectionEmpty()) { return new ArrayList<>(0); } final List<Object[]> removedItems = new SmartList<>(); final int columnCount = model.getColumnCount(); doRemoveSelectedItems(table, new ItemRemovable() { @Override public void removeRow(int index) { Object[] row = new Object[columnCount]; for (int column = 0; column < columnCount; column++) { row[column] = model.getValueAt(index, column); } removedItems.add(row); itemRemovable.removeRow(index); } }, applyable); return ContainerUtil.reverse(removedItems); }