anchor.diff:    (:method-combination plist-union)
     (:method plist-union ((purpose graphviz-graph) (from t) (to t)) nil))
   
  -(defparameter *graphviz-viewer* "evince")
  -
  -(defparameter *graphviz-viewer-format* "pdf")
  -
   (defgeneric graphviz-draw-graph (purpose graph-roots &optional stream)
     (:documentation
      "Write object to STREAM in a format suitable for the program
  
positive.code: 
  (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))
  
  
negative.code:         (maphash #'write-edges table)
          (format stream "}~%")))))
  
  (defparameter *graphviz-viewer* "evince")
  
  (defparameter *graphviz-output-format* "pdf")
  
  (defun graphviz (purpose-designator &rest graph-roots)
    (let ((purpose
            (typecase purpose-designator
              (symbol (make-instance purpose-designator))
              (t purpose-designator))))
      (with-temporary-file (:stream stream :pathname dotfile :direction :output)
        (graphviz-draw-graph purpose graph-roots stream)
        (finish-output stream)
        :close-stream
        (with-temporary-file (:pathname imagefile)
          (run-program (list "dot"
                             (format nil "-T~A" *graphviz-output-format*)
                             "-o"
                             (native-namestring imagefile)
                             (native-namestring dotfile)))
          (run-program (list *graphviz-viewer* (native-namestring imagefile)))))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Example 1: Draw the Class Hierarchy of the Current Lisp Image
  
  (defclass class-hierarchy (graphviz-graph) ())
  
  (defmethod graphviz-successors ((purpose class-hierarchy) (node class))
    ;; Show only classes that are accessible in the current package and all
  