anchor.diff:     already exists, or NIL otherwise"
     (gethash name graph))
   
  -(defun get-location-node (graph name)
  +(defun get-location-node (graph name &optional queue)
     "Return the location node named NAME from GRAPH, creating it
  -   if necessary"
  +   if necessary.  If the node is created and QUEUE is non-NIL,
  +   then the new node will be queued for processing."
     (multiple-value-bind (node found-p)
         (gethash name graph)
       (if found-p
  -        node
  -        (setf (gethash name graph)
  -              (make-location-node :name name)))))
  +      node
  +      (let ((node (make-location-node :name name)))
  +        (when queue
  +          (enqueue-node queue node))
  +        (setf (gethash name graph) node)))))
   
   (defun find-node-property (node name)
     "Return the location node pointed to by NODE's NAME property if
  
positive.code:    of a type created by constructor CONSTRUCTOR-NAME (which will
     usually be the name of a built-in type such as Number)"
    (let ((location-node (get-location-node graph constructor-name)))
      (setup-function-node graph location-node :link-prototype-to-value-node t)
      (remove-duplicates
       (loop for type-node in (location-node-assignments location-node)
             for prototype-node = (find-node-property type-node "prototype")
             when prototype-node
             append (location-node-assignments prototype-node)))))
  
  (defun get-instance-node (graph constructor)
    "Returns a node representing an instance of the type(s) constructed by
     CONSTRUCTOR.  CONSTRUCTOR is either the name of a location-node to
     retrieve from GRAPH, or a node in GRAPH representing the constructor.
  
     For Object and Array types, a new instance node is
     created.  For all other types, the same 'exemplar node' is used for
     all instances."
    (let* ((ctor-node (if (type-graph-node-p constructor)
                              constructor
                              (get-location-node graph constructor)))
           (ctor-name (type-graph-node-name ctor-node)))
           
      (setup-function-node graph ctor-node)
  
negative.code:   (awhen (find-location-node graph name)
      (find-value-node-named name (location-node-assignments it))))
  
  (defun setup-function-node (graph node)
    "Sets up a location-node to point to a value-node of the same name.
     The existence of three nodes will be guaranteed:
       (1) A value-node with an assignment edge from NODE and the same name as NODE
       (2) A location node pointed to by the 'prototype' property of (1)
       (3) A value-node named #:|NAME-prototype| with an assignment edge from (3).
  
     Returns the function value-node (2)"
    (let* ((name (location-node-name node))
           (function-value (aif (find-value-node-named name (location-node-assignments node))
                             it
                             (make-value-node :name name :constructor-name "Function"))) ;(1)
           (prototype-node (get-node-property graph function-value "prototype"))) ;(2)
  
      ;; Ensure edge from NODE to (1)
      (pushnew function-value (location-node-assignments node))
      
      ;; Ensure (3)
  