anchor.diff:    (declare (type queue queue))
     (eql (car (queue-state queue)) :running))
   
  -(defun enqueue (queue task)
  -  (declare (type queue queue)
  -           (type task  task))
  +(defun enqueue (task &optional (queue *current-queue*))
  +  (declare (type task-designator task)
  +           (type queue queue))
     (with-mutex ((queue-lock queue))
       (assert (alive-p queue))
  -    ;; FIXME
       (sb-queue:enqueue task (queue-queue queue))
       (condition-broadcast (queue-cvar queue)))
     nil)
   
  -(defun enqueue-all (queue tasks)
  +(defun enqueue-all (tasks &optional (queue *current-queue*))
     (declare (type queue queue))
     (with-mutex ((queue-lock queue))
       (assert (alive-p queue))
  -    (let ((queue   (queue-queue queue)))
  +    (let ((queue (queue-queue queue)))
         (map nil (lambda (task)
                    (sb-queue:enqueue task queue))
              tasks))
       (condition-broadcast (queue-cvar queue)))
     nil)
   
  -(defun push-self (queue task)
  +(defun push-self (task &optional (queue *current-queue*))
     (declare (type queue queue)
  -           (type task  task))
  +           (type task-designator task))
     (assert (alive-p queue))
     (let ((id *worker-id*))
       (cond (id
  
positive.code: (defpackage "WORK-QUEUE"
    (:use "CL" "SB-EXT" "SB-THREAD")
    (:export "MAKE" "P" "QUEUE" "ALIVE-P"
             "TASK" "TASK-P" "TASK-FUN" "BULK-TASK" "BULK-TASK-P" "TASK-DESIGNATOR"
             "ENQUEUE" "ENQUEUE-ALL" "STOP"
             "PUSH-SELF" "PUSH-SELF-ALL")
    (:import-from "WORK-STACK"
                  "TASK" "TASK-P" "TASK-FUN"
                  "BULK-TASK" "BULK-TASK-P"
                  "TASK-DESIGNATOR")
    (:nicknames "WQ"))
  
  (in-package "WORK-QUEUE")
  
  
negative.code:           (t
             (enqueue queue task)))))
  
  (defun push-self-all (tasks &optional (queue *current-queue*))
    (declare (type queue queue))
    (assert (alive-p queue))
    (let ((id *worker-id*))
  