anchor.diff:  	    (0 (make-let*)
   	       (setq body (cons (mvform-form (binding-mvform binding))
   				body)))
  -	    (1 (push `(,(variable-name (car (binding-variables binding)))
  -		       ,(mvform-form (binding-mvform binding)))
  -		     let-bindings))
  +	    (1 (let ((form (mvform-form (binding-mvform binding))))
  +		 (push (if (equal '(values) form)
  +			   ;; Lexical binding without useful values
  +			   (variable-name (car (binding-variables binding)))
  +			   ;; Lexical binding with useful values
  +			   `(,(variable-name (car (binding-variables binding)))
  +			     ,(mvform-form (binding-mvform binding))))
  +		       let-bindings)))
   	    (t (make-let*)
   	       (setq body
   		     (list `(multiple-value-bind
  
positive.code: 				   :unconditionally-assigned-variables (list assigned-thing)))))
  	  (cond
  	    ((setq assoc (assoc name *lexical-variables* :test 'string-equal))
  	     (let ((var-name (variable-name (cdr assoc))))
  	       (push-mvform :form `(setq ,var-name
  				    ,(mvform-form value-mvform))
  			    :types ()
  			    :side-effects (compute-side-effects var-name))))
  	    ((member (bst-function-name fun) *lexicals* :test 'string-equal)
  	     (let ((var (make-variable :name (bst-name-to-lisp-name name)
  				       :type (car (bst-function-result-types fun)))))
  	       (push (make-binding :variables (list var)
  				   :mvform value-mvform) *form-bindings*)
  	       (push (cons name var) *lexical-variables*)))
  	    (t
  	     (let* ((setter-form-maker (bst-function-setter-form-maker fun))
  		    (setter-form (funcall setter-form-maker (mvform-form value-mvform))))
  	       (push-mvform
  		:form setter-form :types ()
  		:side-effects (compute-side-effects name)))))))))
  
  (defun get-bst-function (name)
    (let ((function (gethash (string name) *bst-functions*)))
  
negative.code: ;;   store arguments for later use).  Keep track whether a variable is
  ;;   accessed before it is assigned in any function; if not, we can make
  ;;   it lexical in *all* functions.  This requires a second compiler pass.
  ;; * maybe name formal arguments "STRING1", "INT1", ..., depending on type?
  ;; * maybe replace dots with dashes in function names
  ;; * don't name the temporary variables occuring in while$ "ARGnn"
  