anchor.diff:    (awhen (find-location-node graph name)
       (find-value-node-named name (location-node-assignments it))))
   
  -(defun setup-function-node (graph node &key link-prototype-to-value-node)
  +(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 location node pointed to by the 'prototype' property of either NODE or (2)
  -         (depending upon the value of LINK-PROTOTYPE-TO-VALUE-NODE)
  -     (2) A value-node with an assignment edge from NODE and the same name as NODE
  -     (3) A value-node named #:|NAME-prototype| with an assignment edge from (1).
  +     (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")))
  -         (prototype-node (if link-prototype-to-value-node
  -                           (get-node-property graph function-value "prototype")
  -                           (get-node-property graph node "prototype")))) ;(1)
  -
  -    ;; Ensure (2)
  +                           (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)
  
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:    already exists, or NIL otherwise"
    (gethash name graph))
  
  (defun get-location-node (graph name &optional queue)
    "Return the location node named NAME from GRAPH, creating it
     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
        (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
  