anchor.diff:             "EXECUTE-TASK"
              "STACK" "MAKE" "P"
              "PUSH" "PUSH-ALL" "STEAL" "RUN-ONE"))
  +
  +;;; Work-unit stack
  +;;;
  +;;; Normal task-stealing stack, with special support for tasks composed of subtasks.
  +;;;
  +;;; A task designator is either a function designator, a task, or a bulk-task.
  +;;;
  +;;; A function designator is called, and a task's fun is called with the task as its
  +;;; only argument.
  +;;;
  +;;; When only those are used, the work stack is a normal stack of task units, with
  +;;; PUSH to insert a new task (PUSH-ALL to insert a sequence of tasks), STEAL to get
  +;;; one task from the bottom of the stack, and RUN-ONE to execute and pop the topmost
  +;;; task.
  +;;;
  +;;; Bulk-task objects represent a set of subtasks to be executed, and a sequence of
  +;;; operations to perform once all the subtasks have been completed.
  +;;;
  +;;; Task stealing of bulk tasks is special: bulk tasks have multiple owners, so bulk
  +;;; tasks aren't stolen as much as forcibly shared.  All the workers that share a bulk
  +;;; task cooperate to complete the subtasks.  The last worker to finish executing a
  +;;; subtask then executes the cleanups.
  +;;;
  +;;; Subtasks and cleanups are functions that are called with the subtask as their one
  +;;; argument.
   
   (in-package "WORK-STACK")
   
  
positive.code:   (etypecase task
      ((or symbol function)
       (funcall task))
      (bulk-task
       (error "~S of ~S not supported" 'execute-task 'bulk-task))
      (task
       (funcall (task-fun task) task))))
  
  
negative.code:   (declare (type cons hint-and-bulk))
    (destructuring-bind (hint . bulk) hint-and-bulk
      (declare (type fixnum hint)
               (type (or null bulk-task) bulk))
      (when (null bulk)
        (return-from bulk-find-task))
      (let* ((subtasks (bulk-task-subtasks bulk))
             (begin    hint)
             (end      (length subtasks)))
        (loop
          (when (zerop (bulk-task-waiting bulk))
            (setf (cdr hint-and-bulk) nil)
            (return (values nil nil)))
          (let ((index (position nil subtasks :start begin :end end :test-not #'eql)))
            (cond (index
  