anchor.diff:                          (if (member :execute situations)
                               (expand-body body)
                               nil))
  -                       (((let let* symbol-macrolet flet labels)
  +                       (((let let* flet labels)
                            bindings &body body)
                           (let ((in-let? t)) (declare (special in-let?))
                             (multiple-value-bind (body decls) (parse-body body)
                               `(,(car form) ,bindings
                                 ,@decls
                                 ,(expand-body body)))))
  +                       ((symbol-macrolet bindings &body body)
  +                        (let ((in-let? t)
  +                              (symbol-macros (append bindings symbol-macros)))
  +                          (declare (special in-let? symbol-macros))
  +                          (multiple-value-bind (body decls) (parse-body body)
  +                            `(symbol-macrolet ,bindings
  +                               ,@decls
  +                               ,(expand-body body)))))
  +                       ((macrolet bindings &body body)
  +                        (let ((in-let? t)
  +                              (macros (append bindings macros)))
  +                          (declare (special in-let? macros))
  +                          (multiple-value-bind (body decls) (parse-body body)
  +                            `(macrolet ,bindings
  +                               ,@decls
  +                               ,(expand-body body)))))
                          (((multiple-value-bind destructuring-bind progv)
                            vars expr &body body)
                           (let ((in-let? t)) (declare (special in-let?))
  
positive.code:                           (push `(,name (&rest args) (apply ,temp args)) labels)
                            `(progn (setf ,temp (ensure-function ,expr)) ',name)))
                         ((progn &body body)
                          `(progn ,@(mapcar #'expand-partially body)))
                         (((prog1 multiple-value-prog1) f &body body)
                          `(,(car form) ,(expand-partially f)
                            ,(expand-body body)))
  
negative.code: 
  2. Macro (but not symbol macros!) that are preceded by other
  expressions cannot be used in the partial expansions of subsequent
  forms. It simply cannot be done portably. (This limitation also
  applies to direct use of `macrolet'.)
  
  The value returned by the `local` form is that of the last form in
  BODY. Note that definitions have return values in `local' just like
  