anchor.diff:           	 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 "\") "
  +                       "if (k != \"" '__tre-object-id "\" && k !=\"" '__tre_test "\") "
                              a "[k] = " b "[k];"))
       a))
   
  
positive.code:     (character? key)
        (aref hash (%%%string+ "~%C" key.v))
      (object? key)
        (? (defined? key._caroshi-object-id)
           (aref hash key._caroshi-object-id))
      (aref hash key)))
  
  (defun hash-table? (x)
  
negative.code: (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.__tre-object-id)
            (let id (%%key (setf *obj-id-counter* (%%%+ 1 *obj-id-counter*)))
              (setf key.__tre-object-id id
                    (aref *obj-keys* id) key)))
          (setf (aref hash key.__tre-object-id) value))
      (setf (aref hash key) value)))
  
  (defun href (hash key)
  