(define-method-combination hooks () ((around (:around)) (primary () :required t)) (let ((primary-call-form `(progn ,@(loop for method in primary collect `(call-method ,method))))) (if (null around) primary-call-form `(call-method ,(first around) (,@(rest around) (make-method ,primary-call-form))))))