public void removeItems(int[] rows) {
        Arrays.sort(rows);
        if (rows.length == 1) {
            removeItem(rows[0]);
        } else {
            int[] mutableRows = new int[rows.length];
            System.arraycopy(rows, 0, mutableRows, 0, rows.length);
            int firstRow = rows[0];
            int count = 1;
            for (int i = 0; i < rows.length; i++) {
                int mutableRow = mutableRows[i];
                items.remove(mutableRow);
                int nextItem = i + 1;
                changeRows(mutableRow, i, mutableRows, 1);
                int currentRow = rows[i];
                boolean hasNextRow = nextItem < rows.length;
                if (hasNextRow) {
                    boolean isOrder = (currentRow + 1) == rows[nextItem];
                    if (isOrder) {
                        count++;
                    } else {
                        fireTableRowsDeleted(firstRow, currentRow);
                        changeRows(currentRow, i, rows, count);
                        count = 1;
                        firstRow = rows[nextItem];
                    }
                } else {
                    fireTableRowsDeleted(firstRow, currentRow);
                }
            }
        }
    }