anchor.diff:            (setf (gethash final last-obj) val))
         val)))
   
  -(defun %hget-core (obj path)
  -  (let ((placeholder obj))
  -    (loop for entries on (if (listp path) path (list path))
  -       do
  -         (if (and entries placeholder
  -                  (not (or (hash-table-p placeholder)
  -                           (listp placeholder)
  -                           (vectorp placeholder))))
  -             (error "Can't descend into tree. Value is not null, but is not a hash table or sequence.")
  -             (let ((current (if (numberp (car entries))
  -                             (elt placeholder (car entries))
  -                             (gethash (car entries) placeholder))))
  -               (if current
  -                   (setf placeholder current)
  -                   (return-from %hget-core (values placeholder entries))))))
  -    placeholder))
  -
   (defun hget/extend (obj path)
     "Like hget, but does not raise an error if the lower part of the tree is
      missing. Instead, it returns nil as the first value and the unmatched
  
positive.code:   "Extends hash-create syntax to make it nicer."
    `(hash-create (list ,@(loop for pair in pairs collect (list 'list (car pair) (cadr pair))))))
  
  (defun hget (obj path)
    "Allows you to specify a path to get values out of a hash/list object. For
     instance, if you did:
  
negative.code:    They must be added manually. Numerical indices in the extension portion of
     the path will result in an error."
    (let ((path (if (listp path) path (list path))))
      (multiple-value-bind (value leftover) (%hget-core obj path)
        (if leftover
            (let ((current value))
              (when (some #'numberp leftover)
                (error "Number in hget/extend path list, but hget/extend won't create sequences"))
              (dolist (key (butlast leftover))
                (setf (gethash key current) (funcall new-hash-func))
                (setf current (gethash key current)))
              (setf (gethash (car (last leftover)) current) val))
            (setf (hget obj path) val)))))
  
  
  (defun hash-copy (hash &key (test #'equal))
  