;; Error checking still required. (defgeneric migrate-methods (source-generic-function target-generic-function) (:method (source target) (let ((methods (closer-mop:generic-function-methods source))) (dolist (m methods) (remove-method source m) (add-method target m))))) (defgeneric replace-generic-function-using-class (generic-function class) (:method ((name symbol) (class symbol)) (let ((gf (fdefinition name))) (fmakunbound name) (migrate-methods gf (ensure-generic-function name :generic-function-class class :lambda-list (closer-mop:generic-function-lambda-list gf) :name name)))))