                  movements (gen/vector (gen-next key-len))] ;; TODO use gen-movement once Treeterator supports seek
                 (run-self-join-prop min-keys key-len actions movements)))
 
-(run-trie-tree-prop 1 3 [[:assoc! #js [-86 90 "-9"] #js [-77 20 -16]] [:assoc! #js [-64 90 -44] #js [7 -8 -47]]] [[:next]])
-
 (comment
   (dc/quick-check 1000 (least-prop 1))
   (dc/quick-check 1000 (least-prop 2))

         (.reset iterator)))

(defn trieterator [iterator]
  (let [trieterator (Trieterator. iterator (greatest-key (.-key-len iterator)) nil -1 0 false (.-key-len iterator))]
    (.maintain trieterator)
    trieterator))


  (down [this]
        (assert (false? end?))
        (assert (< moving-key-ix (- (alength seek-key) 1)))
        (aset pinned-key moving-key-ix (.key this))
        (set! moving-key-ix (+ moving-key-ix 1))
        (aset seek-key moving-key-ix (.key this))
        (.maintain this))
  (up [this]
      (assert (> moving-key-ix 0))
      (when (false? end?)
        (.seek iterator pinned-key))
      (aset seek-key moving-key-ix greatest)
      (set! moving-key-ix (- moving-key-ix 1))
      (when (>= moving-key-ix 0)
        (aset pinned-key moving-key-ix greatest))
      (.maintain this))
  (mark [this]
        (.mark iterator))
