anchor.diff:    "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."
  -
  -  (let ((ret-node 
  -         (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))))))
  -
  -    ;;TODO This might be the sort of thing that gets declared in a "prelude" of
  -    ;; type-declarations, but for now we'll ensure that built-in types have their
  -    ;; constructors set up on demand.
  -    (when (find name '("Array" "Boolean" "Function" "null" "Number" "Object" "RegExp" "String" "undefined")
  -                :test 'equal)
  -      (setup-function-node graph ret-node))
  -    ret-node))
  +  (flet ((maybe-setup-builtin (node)
  +           ;;TODO This might be the sort of thing that gets declared in a "prelude" of
  +           ;; type-declarations, but for now we'll ensure that built-in types have their
  +           ;; constructors set up on demand.
  +           (when (find name '("Array" "Boolean" "Function" "Number" "Object" "RegExp" "String")
  +                       :test #'equal)
  +             (setup-function-node graph node))
  +
  +           (when (find name '("null" "undefined") :test #'equal)
  +             (unless (find-value-node-named name (location-node-assignments node))
  +               (push (make-value-node :name name :constructor-name name)
  +                     (location-node-assignments node))))
  +
  +           node))
  +    
  +    (multiple-value-bind (node found-p)
  +        (gethash name graph)
  +      (if found-p
  +        (maybe-setup-builtin node)
  +        (let ((node (make-location-node :name name)))
  +          (when queue
  +            (enqueue-node queue node))
  +          (setf (gethash name graph) node)
  +          (maybe-setup-builtin node))))))
   
   (defun find-node-property (node name)
     "Return the location node pointed to by NODE's NAME property if
  
positive.code:     ((:false :true)
       (get-instance-node graph "Boolean"))
      (:null
       (get-instance-node graph "null"))
      (:undefined
       (get-instance-node graph "undefined"))))
  
  (defmethod populate-nodes (graph (elm binary-operator))
    (let ((left-node (populate-nodes graph (binary-operator-left-arg elm)))
  
negative.code:     (:typeof
       (get-instance-node graph "String"))
      (:void
       (get-location-node graph "undefined"))
      (otherwise
       (error "unrecognized unary operation ~A" (unary-operator-op-symbol elm)))))
      
  