anchor.diff:  	(compile-ast (test ast) (list test-temp) test)))))
   
   (defmethod compile-ast ((ast progn-ast) value-context successor)
  -  (let ((next (compile-ast (car (last (forms ast))) value-context successor)))
  -    (loop for sub-ast in (cdr (reverse (forms ast)))
  +  (let ((next (compile-ast (car (last (form-asts ast)))
  +			   value-context successor)))
  +    (loop for sub-ast in (cdr (reverse (form-asts ast)))
   	  do (setf next (compile-ast sub-ast '() next)))
       next))
   
   (defparameter *block-info* nil)
   
   (defmethod compile-ast ((ast block-ast) value-context successor)
  -  (setf (gethash (binding ast) *block-info*)
  +  (setf (gethash ast *block-info*)
   	(list value-context successor))
     (compile-ast (body ast) value-context successor))
   
   (defmethod compile-ast ((ast return-from-ast) value-context successor)
     (declare (ignore value-context successor))
     (destructuring-bind (value-context successor)
  -      (gethash (binding ast) *block-info*)
  -    (compile-ast (form ast) value-context successor)))
  +      (gethash (block-ast ast) *block-info*)
  +    (compile-ast (form-ast ast) value-context successor)))
   
   (defparameter *go-info* nil)
   
  
positive.code: 
  (defmethod compile-ast ((ast go-ast) value-context successor)
    (declare (ignore value-context successor))
    (gethash (binding ast) *go-info*))
  
  (defmethod compile-ast ((ast function-call-ast) value-context successor)
    (let ((next successor))
  
negative.code: 	   (make-instance 'constant-assignment-instruction
  	     :target temp
  	     :constant (value ast)
  	     :next (make-instance 'leave-instruction
  		     :sources (list temp)
  		     :next successor))))
  	(t
  	 (make-instance 'constant-assignment-instruction
  	   :target (car value-context)
  	   :constant (value ast)
  	   :next (nil-fill (cdr value-context) successor)))))
  
  (defmethod compile-ast ((ast if-ast) value-context successor)
  