anchor.diff:  	       (every (lambda (input) (typep input 'datum)) (inputs obj))))
     (assert (and (listp (outputs obj))
   	       (every (lambda (output) (typep output 'datum)) (outputs obj))))
  +  ;; Add this instruction as a using instruction to its inputs.
  +  (loop for input in (inputs obj)
  +	do (push obj (using-instructions input)))
  +  ;; Add this instruction as an assigning instruction to its outputs.
  +  (loop for output in (outputs obj)
  +	do (push obj (defining-instructions output)))
  +  ;; Add this instruction as a successor of its predecessors.
     (loop for successor in (successors obj)
   	do (push obj (predecessors successor))))
   
  
positive.code:   (assert (= (length (successors existing)) 1))
    (insert-instruction-between new existing (car (successors existing))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Instructions for Common Lisp operators.
  
negative.code: ;;;
  ;;; This is the root class of all different kinds of data. 
  
  (defclass datum ()
    ((%defining-instructions :initform '() :accessor defining-instructions)
     (%using-instructions :initform '() :accessor using-instructions)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  