anchor.diff:  
   ;;; Returns the list memories that have this one as their parent.
   (defgeneric memory-children (memory))
  +
  +;;; Returns the list of processors with access to this piece of memory.
  +(defgeneric memory-processors (memory))
   
   ;;; Returns the memory size in bytes.
   (defgeneric memory-size (memory))
  
positive.code:    (%processors
      :initarg :processors
      :reader machine-processors
      :type list)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  
negative.code:   (unless (null (memory-parent memory))
      (pushnew memory (memory-children-slot (memory-parent memory)))))
  
  (defmethod shared-initialize :after ((processor processor) slot-names &key &allow-other-keys)
    (declare (ignore slot-names))
    (labels ((register-processor-with-memory (memory)
               (unless (null memory)
                 (pushnew processor (memory-processors-slot memory))
                 (register-processor-with-memory (memory-parent memory)))))
      (register-processor-with-memory (processor-memory processor))))
  
  (defmethod print-object ((memory memory) stream)
    (format stream "~@<#<~;~S ~_~@{~S ~:_~S~^ ~_~}~;>~:>"
            (class-name (class-of memory))
            :name (memory-name memory)
            :size (memory-size memory)
  