anchor.diff:  
   (defclass graphviz-graph () ())
   
  +(defgeneric graphviz-standard-purpose (node)
  +  (:method ((node t)) 'graphviz-graph))
  +
   (defgeneric graphviz-successors (purpose node)
     (:method ((purpose graphviz-graph) (node t)) nil))
   
  
positive.code:           (finish-output stream)
            :close-stream
            (with-temporary-file (:pathname imagefile)
              (run-program (list "dot" "-Tpdf" "-o"
                                 (native-namestring imagefile)
                                 (native-namestring dotfile)))
              (run-program (list *graphviz-pdf-viewer* (native-namestring imagefile))))))
      (values))
  
    ;; the actual graph drawing algorithm
    (:method (purpose-designator graph-roots &optional stream)
      (let ((table (make-hash-table :test #'eq))
            (node-counter 0)
            (*print-case* :downcase)
            (purpose (if (symbolp purpose-designator)
                         (make-instance purpose-designator)
                         purpose-designator)))
        (labels
            ((populate-node-table (node)
               (unless (gethash node table)
  
negative.code:                               from-id to-id
                                (graphviz-edge-plist purpose from to))))
                    (graphviz-successors purpose from))))
          (map nil #'populate-node-table graph-roots)
          (format stream "digraph G {~%")
          (format stream "~{  ~A=~S~%~}" (graphviz-graph-plist purpose))
          (maphash #'write-node table)
          (maphash #'write-edges table)
          (format stream "}~%")))))
  
  (defun graphviz (graph &optional purpose-designator)
    (let* ((graph-roots
             (typecase graph
               (sequence graph)
               (t (list graph))))
           (purpose-designator
             (or purpose-designator
                 (graphviz-standard-purpose (elt graph-roots 0))))
           (purpose
             (typecase purpose-designator
               (symbol (make-instance purpose-designator))
               (t purpose-designator))))
      (graphviz-draw-graph purpose graph-roots nil)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; example: draw the class hierarchy of the current lisp image
  
  (defclass class-hierarchy (graphviz-graph) ())
  
  (defmethod graphviz-standard-purpose ((node class))
    'class-hierarchy)
  
  (defmethod graphviz-successors ((purpose class-hierarchy) (node class))
    ;; Show only classes that are accessible in the current package and all
  