Plaster

common-lisp
(defmacro def-this-method (name (first &rest rest) &body body) (let ((all-the-slots (mapcar #'mop:slot-definition-name (mop:class-slots (find-class (cadr first)))))) `(defmethod ,name (,first ,@rest) (with-slots (,@all-the-slots) ,(car first) ,@body))))