anchor.diff:                                       :parent labels
                                        :source (list* name arguments body))
            do (push (cons name lambda) (binds labels))
  -         do (setf env (register env :flet name lambda)))
  +         do (extend env :flet name lambda))
         (setf (binds labels) (nreverse (binds labels)))
         (loop
            for form in binds
  
positive.code:   (with-form-object (symbol-macrolet symbol-macrolet-form :parent parent :source form
                                       :binds '())
      (dolist* ((symbol expansion) (second form))
        (setf env (register env :symbol-macrolet symbol expansion))
        (push (cons symbol expansion) (binds symbol-macrolet)))
      (setf (binds symbol-macrolet) (nreverse (binds symbol-macrolet))
            (body symbol-macrolet) (walk-implict-progn parent (cddr form) env))))
  
negative.code:                               :binds '())
      (dolist* ((name args &body body) (second form))
        (let ((handler (eval `(lambda ,args ,@body))))
          (extend env :macrolet name handler)
          (push (cons name handler) (binds macrolet))))
      (setf (binds macrolet) (nreverse (binds macrolet)))
      (multiple-value-setf ((body macrolet) nil (declares macrolet)) (walk-implict-progn macrolet (cddr form) env :declare t))))
  