 
   (copy-and-set-value [inode e bit val]
     (let [idx (inc (* 2 (bitmap-indexed-node-index datamap bit)))]
-      (if (can-edit e edit)
+      (if ^boolean (can-edit e edit)
         (do
           (aset arr idx val)
           inode)

        (not (zero? (bit-and nodemap bit)))
        (let [sub-node (aget arr (node-at arr nodemap bit))
              sub-node-new (.inode-without sub-node wedit (+ shift 5) hash key changed?)]
          (if (.-modified changed?)
            (if (.single-kv? sub-node-new)
              (if (and (zero? datamap) (== 1 (bit-count nodemap)))
                sub-node-new
                (.copy-and-migrate-to-inline inode wedit bit sub-node-new))

  Object
  (copy-and-set-node [inode e bit node]
    (let [idx (node-at arr nodemap bit)]
      (if ^boolean (can-edit e edit)
        (do
          (aset arr idx node)
          inode)
