anchor.diff:  (defun clock-remove (task &optional (clock *clock*))
     "Remove TASK from CLOCK's tasks."
     (with-slots (tasks tasks-lock) clock
  -    (bt:with-lock-held (tasks-lock)
  +    (bt:with-recursive-lock-held (tasks-lock)
         (setf tasks
               (remove-if
                (lambda (ctask)
  
positive.code:   (when (null clock)
      (error "cl-patterns clock is NIL; perhaps try (defparameter *clock* (make-clock)) or (start-clock-loop)"))
    (with-slots (tasks tasks-lock) clock
      (bt:with-lock-held (tasks-lock)
        (let ((task (make-instance 'task :item item :clock clock :start-beat (next-beat-for-quant (quant item) (slot-value clock 'beat)))))
          (setf tasks (append tasks (list task)))
          task))))
  
negative.code:   ((beat :initform 0 :documentation "The number of beats that have elapsed since the creation of the clock.")
     (tempo :initarg :tempo :initform 1 :reader tempo :documentation "The tempo of the clock, in beats per second.")
     (tasks :initform nil :documentation "The list of tasks that are running on the clock.")
     (tasks-lock :initform (bt:make-recursive-lock) :documentation "The lock on the tasks to make the clock thread-safe.")
     (timestamp-at-tempo :initform (local-time:now) :documentation "The local-time timestamp when the tempo was last changed.")
     (beat-at-tempo :initform 0 :documentation "The number of beats on the clock when the tempo was last changed."))
    (:documentation "A musical time-based clock defining a tempo and pulse that its tasks synchronize to."))
  