anchor.diff:    (with-open-file (stream filename
   			  :direction :output
   			  :if-exists :supersede)
  -    (format stream "digraph G {~%")
  +    (format stream "digraph G {~% ordering = out;~%")
       ;; Draw all the nodes first.
       (loop for node in preorder
   	  do (format stream
  
positive.code: 			      (name succ))))
      (format stream "}~%")))
  
  ;;; This algorithm applies the definition of dominators by examining
  ;;; all possible paths from the root of the flow chart to a node N,
  ;;; and removing any node not on that path from the possible
  
negative.code: 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Dominance frontiers.
  
  (defun children (dominance-tree)
    (let ((result (make-hash-table :test #'eq)))
      (loop for node being each hash-key of dominance-tree
  	  do (let ((idom (immediate-dominator dominance-tree node)))
  	       (unless (null idom)
  		 (push node (gethash idom result)))))
      result))
  	       
  (defun dominance-frontiers (start-node successor-fun)
    (let* ((dominance-tree (dominance-tree start-node successor-fun))
  	 (children (children dominance-tree))
  	 (result (make-hash-table :test #'eq)))
      (flet ((children (node)
  	     (gethash node children))
  	   (successors (node)
  	     (funcall successor-fun node))
  	   (df (node)
  	     (gethash node result))
  	   ((setf df) (new-df node)
  	     (setf (gethash node result) new-df)))
        (labels ((traverse (node)
  		 (mapc #'traverse (children node))
  		 (loop for succ in (successors node)
  		       do (unless (eq (immediate-dominator dominance-tree succ)
  				      node)
  			    (pushnew succ (df node) :test #'eq)))))
  	(traverse start-node)))
      result))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Test
  
  (defclass node ()
  