anchor.diff:    (with-kernel-slots (worker-info) kernel
       (with-worker-info-slots (bindings name) worker-info
         (let* ((worker (%make-worker index tasks))
  -             (worker-thread (with-thread (:bindings bindings :name name)
  +             (all-bindings (make-all-bindings kernel bindings))
  +             (worker-thread (with-thread (:bindings all-bindings :name name)
                                 (unwind-protect/ext
                                  :prepare (handshake/from-worker worker)
                                  :main    (enter-worker-loop kernel worker)
  
positive.code:   nil)
  
  (defun kernel-bindings ()
    "Returns an alist of thread-local special variable bindings.
  A new thread which uses the current kernel should be given these
  bindings (see bordeaux-threads:*default-special-bindings*)."
    (check-kernel)
    (with-kernel-slots (worker-info) *kernel*
      (with-worker-info-slots (bindings) worker-info
  
negative.code: the number of task-searching iterations done by the worker before
  sleeping."
    (check-type worker-count (integer 1 #.most-positive-fixnum))
    (let* ((workers (make-array worker-count))
           (kernel  (make-kernel-instance
                     :scheduler (make-scheduler workers spin-count)
                     :workers workers
                     :workers-lock (make-lock)
                     :worker-info (make-worker-info-instance
                                   :bindings bindings
                                   :context context
                                   :name name)
                     :optimizer-data (make-optimizer-data *optimizer*))))
      (dotimes (index worker-count)
        (setf (aref workers index) (make-worker kernel index (make-spin-queue))))
      (dosequence (worker workers)
        (handshake/to-worker worker))
      kernel))
  
  (defun check-kernel ()
  