anchor.diff:  (define-walker propogate (operator))
   
   (define (propogate-recurse form operator)
  -  ;; merge the operator into the form.  we copy operator here to make sure
  -  ;; the parts of the source tree don't share structure
  -  (overwrite-form form (append (copy-tree operator)
  -                               (list (cons (car form) (cdr form)))))
  +  ;; merge the operator into the form.
  +  (overwrite-form form (append operator (list (cons (car form) (cdr form)))))
     (dolist (subform (cddr form)) (simplify subform)))
   
   (define-simplify (lambda attrs . body)
  
positive.code:     (set! else (list (quoted-unspecified)))
      (rplacd (cdddr form) else))
    (simplify test)
    (propogate then operator)
    (propogate (car else) operator))
  
  (define-simplify (return attrs body)
    (overwrite-form form body)
  
negative.code:     (if tc
        (begin
          (overwrite-form form (list* (cdr tc) (append (second operator) attrs)
                                      (append (cddr operator) args)))
          (simplify form))
        (propogate-recurse form operator))))
  
  