anchor.diff:      (setf (tagbody-information-go-tags tagbody-info) (append (reverse new-go-tags)
                                                                (tagbody-information-go-tags tagbody-info)))
       (make-instance 'ast-tagbody
  +                   :inherit inherit
                      :info tagbody-info
                      :statements (loop
                                     for (go-tag statement) in statements
  -                                  collect (list (convert-ast-form go-tag new-variables)
  -                                                (convert-ast-form statement new-variables))))))
  -
  -(defun convert-ast-the (new-variables type value)
  +                                  collect (list (convert-ast-form go-tag inherit new-variables)
  +                                                (convert-ast-form statement inherit new-variables))))))
  +
  +(defun convert-ast-the (inherit new-variables type value)
     (make-instance 'ast-the
  +                 :inherit inherit
                    :type (sys.int::typeexpand type)
  -                 :value (convert-ast-form value new-variables)))
  -
  -(defun convert-ast-unwind-protect (new-variables protected-form cleanup-function)
  +                 :value (convert-ast-form value inherit new-variables)))
  +
  +(defun convert-ast-unwind-protect (inherit new-variables protected-form cleanup-function)
     (make-instance 'ast-unwind-protect
  -                 :protected-form (convert-ast-form protected-form new-variables)
  -                 :cleanup-function (convert-ast-form cleanup-function new-variables)))
  -
  -(defun convert-ast-call (new-variables name &rest arguments)
  +                 :inherit inherit
  +                 :protected-form (convert-ast-form protected-form inherit new-variables)
  +                 :cleanup-function (convert-ast-form cleanup-function inherit new-variables)))
  +
  +(defun convert-ast-call (inherit new-variables name &rest arguments)
     (make-instance 'ast-call
  +                 :inherit inherit
                    :name name
                    :arguments (loop
                                  for form in arguments
  -                               collect (convert-ast-form form new-variables))))
  -
  -(defun convert-ast-jump-table (new-variables value &rest targets)
  +                               collect (convert-ast-form form inherit new-variables))))
  +
  +(defun convert-ast-jump-table (inherit new-variables value &rest targets)
     (make-instance 'ast-jump-table
  -                 :value (convert-ast-form value new-variables)
  +                 :inherit inherit
  +                 :value (convert-ast-form value inherit new-variables)
                    :targets (loop
                                for form in targets
  -                             collect (convert-ast-form form new-variables))))
  +                             collect (convert-ast-form form inherit new-variables))))
  
positive.code:   "Produce AST nodes from a programmer-friendly representation.
  *CURRENT-LAMBDA* must be bound appropriately.
  Inherit source locations/etc from INHERIT."
    (declare (ignore inherit))
    (convert-ast-form form '()))
  
  (defun convert-ast-form (form new-variables)
    (when (symbolp form)
      (let ((var (assoc form new-variables)))
        (assert var () "Missing substitution variable ~S" form)
  
negative.code:                (push new real-bindings)))
              (t (push binding real-bindings))))
      (make-instance 'ast-multiple-value-bind
                     :inherit inherit
                     :bindings (reverse real-bindings)
                     :value-form value
                     :body (convert-ast-form body inherit new-variables))))
  
  (defun convert-ast-multiple-value-call (inherit new-variables function value-form)
    (make-instance 'ast-multiple-value-call
                   :inherit inherit
                   :function-form (convert-ast-form function inherit new-variables)
                   :value-form (convert-ast-form value-form inherit new-variables)))
  
  (defun convert-ast-multiple-value-prog1 (inherit new-variables value-form body)
    (make-instance 'ast-multiple-value-prog1
                   :inherit inherit
                   :value-form (convert-ast-form value-form inherit new-variables)
                   :body (convert-ast-form body inherit new-variables)))
  
  (defun convert-ast-progn (inherit new-variables &rest body)
    (make-instance 'ast-progn
                   :inherit inherit
                   :forms (loop
                             for form in body
                             collect (convert-ast-form form inherit new-variables))))
  
  (defun convert-ast-quote (inherit new-variables value)
    (declare (ignore new-variables))
    (make-instance 'ast-quote
                   :inherit inherit
                   :value value))
  
  (defun convert-ast-return-from (inherit new-variables target value-form info)
    (make-instance 'ast-return-from
                   :inherit inherit
                   :target (convert-ast-form target inherit new-variables)
                   :value (convert-ast-form value-form inherit new-variables)
                   :info (convert-ast-form info inherit new-variables)))
  
  (defun convert-ast-setq (inherit new-variables variable value)
    (check-type variable (or symbol lexical-variable))
    (make-instance 'ast-setq
                   :inherit inherit
                   :variable (convert-ast-form variable inherit new-variables)
                   :value (convert-ast-form value inherit new-variables)))
  
  (defun convert-ast-tagbody (inherit new-variables info &rest statements)
    (check-type info (or symbol tagbody-information))
    (let ((tagbody-info (cond ((symbolp info)
                               (make-instance 'tagbody-information
                                              :inherit inherit
                                              :name info
                                              :definition-point *current-lambda*
                                              :use-count 1))
                              (t info)))
          (new-go-tags '()))
      (when (symbolp info)
  