anchor.diff:    (gethash instruction *instruction-table*))
   
   (defgeneric draw-instruction (instruction stream))
  -  
  +
   (defmethod draw-instruction :around (instruction stream)
  -  (when (null (instruction-id instruction))
  -    (setf (gethash instruction *instruction-table*) (gensym))
  -    (format stream "  ~a [shape = box];~%"
  -	    (instruction-id instruction))
  -    (call-next-method)))
  -
  -(defmethod draw-instruction :before ((instruction instruction) stream)
  -  (loop for next in (successors instruction)
  -	do (draw-instruction next stream))
  +  (format stream "  ~a [shape = box];~%"
  +	  (instruction-id instruction))
  +  ;; Draw a numbered bold arrow to each successor.
     (loop for next in (successors instruction)
   	for i from 1
   	do (format stream
   		   "  ~a -> ~a [style = bold, label = \"~d\"];~%"
   		   (instruction-id instruction)
  -		   (gethash next *instruction-table*)
  -		   i)))
  -  
  -(defmethod draw-instruction :after (instruction stream)
  +		   (instruction-id next)
  +		   i))
  +  ;; Draw a numbered red dashed arrow from each input.
     (loop for datum in (inputs instruction)
   	for i from 1
   	do (draw-datum datum stream)
  
positive.code: 	  (instruction-id instruction)
  	  (label instruction)))
  
  (defun draw-flowchart (start filename)
    (with-open-file (stream filename
  			  :direction :output
  			  :if-exists :supersede)
  
negative.code: 		   (datum-id datum)
  		   (instruction-id instruction)
  		   i))
    ;; Draw a numbered blue dashed arrow to each output
    (loop for datum in (outputs instruction)
  	for i from 1
  	do (draw-datum datum stream)
  