anchor.diff:  	   (side-effects
   	    (apply #'max-side-effects
   		   (make-instance 'side-effects :assigned-variables assigned-variables)
  -		   (mapcar #'mvform-side-effects mvforms))))			      
  +		   (mapcar #'mvform-side-effects mvforms))))
         (case (length *borrowed-variables*)
   	(0 nil)
   	(1 (push-mvform :form `(setq ,@psetq-args)
  
positive.code:     (dolist (var str-vars)
        (register-bst-global-var var var 'str-global-var '(string) "" *bst-functions*))
      (bst-compile-defun nil definition)))
  
  #|
  
  
negative.code: 		  (bst-compile-literal then-literal then-stack :borrowing-allowed nil)
  		(declare (ignore then-arg-types))
  		(let* ((res-types (mapcar #'type-union then-res-types else-res-types))
  		       (then-or-else-side-effects
  			(max-side-effects then-side-effects else-side-effects)))
  		  (setf (side-effects-unconditionally-assigned-variables then-or-else-side-effects)
  			(intersection (side-effects-unconditionally-assigned-variables then-side-effects)
  				      (side-effects-unconditionally-assigned-variables else-side-effects)
  				      :test 'equalp)
  			(side-effects-variables-used-before-assigned then-or-else-side-effects)
  			(union (side-effects-variables-used-before-assigned then-side-effects)
  			       (side-effects-variables-used-before-assigned else-side-effects)
  			       :test 'equalp))
  		  (let ((side-effects
  			 (max-side-effects (mvform-side-effects val-mvform)
  					   then-or-else-side-effects)))
  		    (push-mvform :form (build-if-form (mvform-form val-mvform) then-form else-form)
  				 :types res-types
  				 :side-effects side-effects))))))))))   
  
  (define-bst-special-form "pop$"
      (pop-form t :need-variable :if-side-effects))
  