anchor.diff:    ;; list of variable names, and you have access to the arguments variable inside the function:
     ;; * standard variables are the mapped directly into the js-lambda list
     ;; * optional variables' variable names are mapped directly into the lambda list,
  -  ;;   and for each optional variable with name v and default value d, a form is produced
  -  ;;   (defaultf v d)
  +  ;;   and for each optional variable with name v, default value d, and
  +  ;;   supplied-p parameter s, a form is produced (defaultf v d s)
     ;; * keyword variables are not included in the js-lambda list, but instead are
     ;;   obtained from the magic js ARGUMENTS pseudo-array. Code assigning values to
  -  ;;   keyword vars is prepended to the body of the function.
  +  ;;   keyword vars is prepended to the body of the function. Defaults and supplied-p
  +  ;;   are handled using the same mechanism as with optional vars.
     (declare (ignore name))
     (multiple-value-bind (requireds optionals rest? rest keys? keys allow? aux? aux
                                     more? more-context more-count key-object)
  
positive.code:   (values (if (symbolp spec) spec (first spec))
            (when (listp spec) (second spec))))
  
  (defpsmacro defaultf (place value)
    `(when (=== ,place undefined)
       (setf ,place ,value)))
  
  (defun parse-extended-function (lambda-list body &optional name)
    "Returns two values: the effective arguments and body for a function with
  
negative.code:                   (with-ps-gensyms (n)
                      (let ((decls nil) (assigns nil) (defaults nil))
                        (mapc (lambda (k)
                                (multiple-value-bind (var init-form keyword-str suppl)
                                    (parse-key-spec k)
                                  (push `(var ,var) decls)
                                  (push `(,keyword-str (setf ,var (aref arguments (1+ ,n)))) assigns)
                                  (push (list 'defaultf var init-form suppl) defaults)))
                              (reverse keys))
                        `(,@decls
                          (loop :for ,n :from ,(length requireds)
  