anchor.diff:           ((handler-class :initform (find-class ',handler-class-name))))
          (defmethod add-hook ((hook ,hook-class-name) (handler ,handler-class-name) &key append)
            ,(format nil "Add HANDLER to HOOK.
  -HOOK msut be of type ~a
  -FN must be of type ~a."
  +HOOK must be of type ~a
  +HANDLER must be of type ~a."
                     hook-class-name
                     handler-class-name)
            (add-hook-internal hook handler :append append)))))
  +
  +;; TODO: Add make-hook-* function?
   
   (define-hook-type void (function ()))
   (define-hook-type string->string (function (string) string))
  
positive.code:     (setf (disabled-handlers hook) nil)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  ;; TODO: cl-hooks uses symbol properties.  Is it a good idea?
  ;; TODO: Test this!
  
negative.code: 
  (defmethod combine-hook-until-success ((hook hook) &rest args)
    "Return the value of the first non-nil result.
  Handlers after the successful one are not run.
  This is an acceptable `combination' for `hook'."
    (loop for handler in (handlers hook)
       thereis (apply (fn handler) args)))
  
  (defmethod combine-composed-hook ((hook hook) &rest args)
    "Return the result of the composition of the HOOK handlers on ARGS, from
  oldest to youngest.
  This is an acceptable `combination' for `hook'."
    (apply (apply #'alexandria:compose (mapcar #'fn (handlers hook))) args))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  