anchor.diff:                                  ,@body))
                              ,@(registered-macrolets kernel))
                     ,@body))
  -              (defun/wrapper ,name ,(unchecked-name name) ,params
  +              (defun/wrapper ,name ,(unchecked-name name) ,lambda-list
                   ,@(unsplice docstring)
                   (let ((,kernel (check-kernel)))
                     (if (use-caller-p ,kernel)
  
positive.code:         (values-list (receive-result channel)))))
  
  (defmacro define-defpun (defpun doc defun &rest types)
    `(defmacro ,defpun (name params ,@types &body body)
       ,doc
       (with-parsed-body (body declares docstring)
         (with-lock-held (*registration-lock*)
  
negative.code:          (register-name name)
           (with-gensyms (kernel)
             `(progn
                (,',defun ,(unchecked-name name) (,kernel ,@lambda-list)
                    ,,@(unsplice (when types ``(kernel ,@,(first types))))
                    ,,@(unsplice (when types (second types)))
                  ,@declares
  