anchor.diff:              '(18 34)))
   
   (prove:subtest "Don't add duplicate handlers."
  -  (prove:is (let ((hook
  -                        (make-instance 'next-hooks:hook-number->number
  -                                       :handlers (list (next-hooks:make-handler-number->number #'add1)))))
  +  (prove:is (let ((hook (next-hooks:make-hook-number->number :handlers (list #'add1))))
                 (next-hooks:add-hook hook (next-hooks:make-handler-number->number #'add1))
                 (next-hooks:run-hook hook 17))
               '(18))
  -  (prove:is (let ((hook
  -                        (make-instance 'next-hooks:hook-number->number
  -                                       :handlers (list (next-hooks:make-handler-number->number #'add1)))))
  +  (prove:is (let ((hook (next-hooks:make-hook-number->number :handlers (list #'add1))))
                 (next-hooks:add-hook hook (next-hooks:make-handler-number->number (lambda (n) (+ 1 n)) :name 'add1))
                 (next-hooks:run-hook hook 17))
               '(18)))
   
   (prove:subtest "Combine handlers"
  -  (prove:is (let ((hook
  -                        (make-instance 'next-hooks:hook-number->number
  -                                       :handlers (list (next-hooks:make-handler-number->number #'add1)
  -                                                       (next-hooks:make-handler-number->number #'mul2))
  -                                       :combination #'next-hooks:combine-composed-hook)))
  +  (prove:is (let ((hook (next-hooks:make-hook-number->number
  +                         :handlers (list #'add1 #'mul2)
  +                         :combination #'next-hooks:combine-composed-hook)))
                 (next-hooks:run-hook hook 17))
               35)
  -  (prove:is (let ((hook
  -                        (make-instance 'next-hooks:hook-number->number
  -                                       :combination #'next-hooks:combine-composed-hook)))
  +  (prove:is (let ((hook (next-hooks:make-hook-number->number
  +                         :combination #'next-hooks:combine-composed-hook)))
                 (next-hooks:run-hook hook 17))
               17))
   
   (prove:subtest "Remove handler from hook"
     (prove:is (let* ((handler1 (next-hooks:make-handler-number->number #'add1))
  -                   (hook
  -                     (make-instance 'next-hooks:hook-number->number
  -                                    :handlers (list handler1
  -                                                    (next-hooks:make-handler-number->number (lambda (n) (* 3 n)) :name 'mul3)))))
  +                   (hook (next-hooks:make-hook-number->number
  +                          :handlers (list handler1
  +                                          (next-hooks:make-handler-number->number (lambda (n) (* 3 n)) :name 'mul3)))))
                 (next-hooks:remove-hook hook 'mul3)
                 (next-hooks:remove-hook hook handler1)
                 (next-hooks:run-hook hook 17))
  
positive.code:                     handler1))
                t)
      (prove:is (let* ((hook
                         (make-instance 'next-hooks:hook-number->number
                                        :handlers (list handler1
                                                        (next-hooks:make-handler-number->number (lambda (n) (* 3 n)) :name 'mul3)))))
                  (next-hooks:disable-hook hook)
                  (next-hooks:enable-hook hook)
                  (length (next-hooks:disabled-handlers hook)))
                0)
      (prove:is (let* ((hook
                         (make-instance 'next-hooks:hook-number->number
                                        :handlers (list handler1 handler2))))
                  (next-hooks:disable-hook hook handler1)
                  (list (first (next-hooks:handlers hook))
                        (first (next-hooks:disabled-handlers hook))))
  
negative.code: (prove:subtest "Disable hook"
    (let* ((handler1 (next-hooks:make-handler-number->number #'add1))
           (handler2 (next-hooks:make-handler-number->number #'mul2)))
      (prove:is (let* ((hook (next-hooks:make-hook-number->number
                              :handlers (list handler1
                                              (next-hooks:make-handler-number->number (lambda (n) (* 3 n)) :name 'mul3)))))
                  (next-hooks:disable-hook hook)
                  (length (next-hooks:disabled-handlers hook)))
                2)
      (prove:is (let* ((hook
                        (next-hooks:make-hook-number->number
                         :handlers (list (next-hooks:make-handler-number->number (lambda (n) (* 3 n)) :name 'mul3)))))
                  (next-hooks:disable-hook hook)
                  (next-hooks:add-hook hook handler1)
                  (next-hooks:disable-hook hook)
  