anchor.diff:            (arg2 (input-value node 'arg2)))
         (+ arg1 arg2)))
   
  -  (defclass mult-node (computation-node computation-node-mixin source-node-mixin sink-node-mixin)
  +  (defclass mult-node (computation-node computation-node-mixin source-sink-mixin)
       ())
   
     (defmethod compute ((node mult-node))
  
positive.code: 
  (defclass source-node-mixin ()
    ((validp :accessor validp :initform nil)
     (sinks :accessor sinks :initform nil)))
  
  (defmethod (setf input) :after ((new-val source-node-mixin) sink input-name)
    (let ((node-entry (find sink (sinks new-val) :key #'car)))
  
negative.code:       (delete-sink source node input-name)))
    nil)
  
  (defclass source-sink-mixin (source-node-mixin sink-node-mixin)
    ()
    (:documentation "Convenience mixin class the slots necessary to implement sources and sinks."))
  
  (define-protocol-class computation-node (source-node sink-node)
    (( :accessor cached-value)
     (:generic compute (node))))
  