     (dc/quick-check 1000 total-prop)
     (dc/quick-check 100 (denotational-prop gen-assoc))
     (dc/quick-check 100 (denotational-prop gen-action)))
+
+  (defn f []
+    (time
+     (let [tree (tree 100)]
+       (dotimes [i 500000]
+         (.assoc! tree i (* 2 i))))))
+
+  (f)
+
+  (defn g []
+    (time
+     (let [tree (tree 100)]
+       (dotimes [i 500000]
+         (.assoc! tree (if (even? i) i (str i)) (* 2 i))))))
+
+  (g)
+
+  (defn h []
+    (time
+     (let [tree (tree 100)]
+       (dotimes [i 500000]
+         (.assoc! tree (js/Math.sin i) (* 2 i))))))
+
+  (h)
  )
 

                 (.dissoc! (aget children ix) key min-keys)))
             result))
  (remove! [this ix min-keys]
           (prn "remove")
           (.splice keys ix 1)
           (.splice vals ix 1)
           (when-not (nil? children)

           (when (< (alength keys) min-keys)
             (cond
              (instance? Node parent) (.rotate-left! this min-keys)
              (and (== (alength keys) 0) (not (nil? children))) (set! (.-root parent) (aget children 0)))))
  (rotate-left! [this min-keys]
                (if (> parent-ix 0)
                  (let [left-node (aget (.-children parent) (- parent-ix 1))
