private void linkOut(Task task) { Task head = slots[task.slot()]; if (task.next() == task) { slots[task.slot()] = null; } else { task.prev().next(task.next()); task.next().prev(task.prev()); if (head == task) { slots[task.slot()] = task.next(); } } task.next(null); task.prev(null); --counts[task.slot()]; }