anchor.diff:    (when *step* (break))
     (call-next-method))
   
  -(defun interpret-mir (enter-instruction environment arguments)
  -  (push (make-hash-table :test #'eq) environment)
  -  (let* ((lambda-list (cleavir-mir:lambda-list enter-instruction)) 
  -	 (pos (position-if (lambda (x) (member x '(&optional &key)))
  -			   lambda-list)))
  -    (cond ((null pos)
  -	   ;; Only required arguments.
  -	   (when (< (length arguments) (length lambda-list))
  -	     (error "too few arguments"))
  -	   (when (> (length arguments) (length lambda-list))
  -	     (error "too many arguments"))
  -	   (loop for value in arguments
  -		 for variable in lambda-list
  -		 do (store-lexical variable environment value)))
  -	  (t
  -	   (error "can't handle &optional or &key yet")))
  -    (let ((next (first (cleavir-mir:successors enter-instruction))))
  +(defun interpret-mir (initial-instruction)
  +  (let ((environment (list (make-hash-table :test #'eq))))
  +    (let ((next initial-instruction))
         (catch 'return
   	(loop do (setf next (execute-instruction next environment)))))))
   
  -(defun enclose (enter-instruction environment)
  -  (lambda (&rest arguments)
  -    (interpret-mir enter-instruction environment arguments)))
  +;; (defun interpret-mir (enter-instruction environment arguments)
  +;;   (push (make-hash-table :test #'eq) environment)
  +;;   (let* ((lambda-list (cleavir-mir:lambda-list enter-instruction)) 
  +;; 	 (pos (position-if (lambda (x) (member x '(&optional &key)))
  +;; 			   lambda-list)))
  +;;     (cond ((null pos)
  +;; 	   ;; Only required arguments.
  +;; 	   (when (< (length arguments) (length lambda-list))
  +;; 	     (error "too few arguments"))
  +;; 	   (when (> (length arguments) (length lambda-list))
  +;; 	     (error "too many arguments"))
  +;; 	   (loop for value in arguments
  +;; 		 for variable in lambda-list
  +;; 		 do (store-lexical variable environment value)))
  +;; 	  (t
  +;; 	   (error "can't handle &optional or &key yet")))
  +;;     (let ((next (first (cleavir-mir:successors enter-instruction))))
  +;;       (catch 'return
  +;; 	(loop do (setf next (execute-instruction next environment)))))))
  +
  +;; (defun enclose (enter-instruction environment)
  +;;   (lambda (&rest arguments)
  +;;     (interpret-mir enter-instruction environment arguments)))
   
   (defmethod execute-instruction
       ((instruction cleavir-mir:assignment-instruction) environment)
  
positive.code: (defmethod read-value ((input cleavir-mir:constant-input) environment)
    (declare (ignore environment))
    (cleavir-mir:value input))
  
  (defmethod read-value ((input cleavir-mir:global-input) environment)
    (declare (ignore environment))
    (fdefinition (cleavir-mir:name input)))
  
  (defgeneric write-value (output environment value))
  
  
negative.code: (cl:in-package #:cleavir-mir-interpreter)
  
  (defgeneric read-value (input environment))
  
  