anchor.diff:  (defmacro %%key (key)
     `(%%%string+ "~~id" ,key))
   
  +(defun hashkeys (hash)
  +  (carlist (%property-list hash)))
  +
   (defun %%usetf-href (value hash key)
     (?
       (character? key)
         (setf (aref hash (%%%string+ "~%C" key.v)) value)
       (object? key)
         (progn
  -        (unless (defined? key._caroshi-object-id)
  +        (unless (defined? key.__tre-object-id)
             (let id (%%key (setf *obj-id-counter* (%%%+ 1 *obj-id-counter*)))
  -            (setf key._caroshi-object-id id
  +            (setf key.__tre-object-id id
                     (aref *obj-keys* id) key)))
  -        (setf (aref hash key._caroshi-object-id) value))
  +        (setf (aref hash key.__tre-object-id) value))
       (setf (aref hash key) value)))
   
   (defun href (hash key)
  
positive.code:          	 x)
      (queue-list q)))
  
  (defun hashkeys (hash)
    (carlist (%property-list hash)))
  
  (defun hash-merge (a b)
    (when (or a b)
      (unless a
        (setf a (make-hash-table)))
      (%setq nil (%transpiler-native
                     "for (var k in " b ") "
                         "if (k != \"" '_caroshi-object-id "\" && k !=\"" '__tre_test "\") "
                             a "[k] = " b "[k];"))
      a))
  
  
negative.code:     (character? key)
        (aref hash (%%%string+ "~%C" key.v))
      (object? key)
        (? (defined? key.__tre-object-id)
           (aref hash key.__tre-object-id))
      (and (defined? hash.__tre-test)
           (not (%%%eq #'eq hash.__tre-test)
                (and (string? key)
                     (%%%eq #'string= hash.__tre-test))))
        (dolist (k (hashkeys hash))
          (when (funcall hash.__tre-test (aref hash key))
            (return (aref hash key))))
      (aref hash key)))
  
  (defun hash-table? (x)
  