             (aget arr (inc (* 2 idx)))
             not-found))
         (not (zero? (bit-and nodemap bit)))
-        (.inode-lookup (aget arr (node-at arr nodemap bit)) (+ shift 5) hash key not-found)
+        (.inode-lookup (aget arr (.node-at inode bit)) (+ shift 5) hash key not-found)
         :else
         not-found)))
 


(defn- bitpos [hash shift]
  (bit-shift-left 1 (mask hash shift)))

(defn- node-at [arr nodemap bit]
  (- (alength arr) 1 (bitmap-indexed-node-index nodemap bit)))

(defn- can-edit [x y]
  (and (coercive-not= x nil) (coercive-not= y nil) (identical? x y)))

               (.copy-and-remove-value inode wedit bit)))
            inode))
        (not (zero? (bit-and nodemap bit)))
        (let [sub-node (aget arr (.node-at inode bit))
              sub-node-new (.inode-without sub-node wedit (+ shift 5) hash key removed-leaf?)]
          (if (identical? sub-node sub-node-new)
            inode
