anchor.diff:  	       (return-the-form))
   	      ((and (eql need-variable :if-side-effects)
   		    (not (any-side-effects-p (mvform-side-effects top-mvform)))
  -		    ;;;(= (length (mvform-types top-mvform)) 1)
  -		    )
  +		    (= (length (mvform-types top-mvform)) 1))
   	       (return-the-form))
   	      ((and (not need-variable)
   		    (= (length (mvform-types top-mvform)) 1))
  
positive.code: 		   ;; branch is STRING->STRING and whose ELSE branch
  		   ;; is NIL->STRING.
  		   ;; FIXME: This could be easily generalized on a better day.
  		   (format *error-output*
  			   "While compiling wizard-defined function `~A':~% Warning: Employing the producer/modifier while loop trick.~%"
  			   *currently-compiled-function*)			   
  		   (do ((then-arg-types (reverse then-arg-types) (cdr then-arg-types))
  			(else-arg-types (reverse else-arg-types) (cdr else-arg-types)))
  		       ((and (null then-arg-types) (null else-arg-types))
  			(setq arg-types (nreverse arg-types)
  			      then-stack (nreverse then-stack)
  			      else-stack (nreverse else-stack)))
  		     (let* ((type (type-intersection
  				   (if then-arg-types (car then-arg-types) t)
  				   (if else-arg-types (car else-arg-types) t)))
  			    (form (pop-single-value-form type
  							 :need-variable :if-side-effects)))
  		       (push type arg-types)
  		       (push form then-stack)
  		       (unless (null else-arg-types)
  			 (push form else-stack))))
  		   ;;(format *error-output* "~&ARG-TYPES: ~S~%THEN-STACK: ~S~%ELSE-STACK: ~S~%"
  		   ;; arg-types then-stack else-stack))
  		   (setq *compiling-while-body* else-balance))
  		  (t
  		   (bst-compile-error "THEN function ~S ~%== ~S and ELSE function ~S ~%== ~S deliver ~
  different net number of values: ~%~A -> ~A vs. ~A -> ~A"
  				      then-literal then-form else-literal else-form
  				      then-arg-types then-res-types
  				      else-arg-types else-res-types)))
  	    (multiple-value-bind (else-form else-arg-types
  					    else-res-types else-side-effects)
  		(bst-compile-literal else-literal else-stack :borrowing-allowed nil)
  
negative.code: 	     (let* ((setter-form-maker (bst-function-setter-form-maker fun))
  		    (value-mvform (pop-single-value-form t :need-variable nil))
  		    (setter-form (funcall setter-form-maker (mvform-form value-mvform))))
  	       (incf (bst-function-num-assignments fun))
  	       (setf (bst-function-assigned-value-form fun) (mvform-form value-mvform))
  	       (push-mvform
  		:form setter-form :types ()
  		:side-effects (compute-side-effects name value-mvform)))))))))
  