   (assert (> num-vars 0))
   (dotimes [i (alength iterators)]
     (let [iterator-vars (aget iterator->vars i)]
-      (assert (== (alength iterator-vars) (.key-len (aget iterators i))))
+      (assert (== (alength iterator-vars) (.-key-len (aget iterators i))))
       (dotimes [j (alength iterator-vars)]
         (assert (< (aget iterator-vars j) num-vars)))))
   (let [var->iterators #js []

        (aset seek-key moving-key-ix (.key this))
        (.maintain this))
  (up [this]
      (assert (true? end?)) ;; ?
      (assert (> moving-key-ix 0))
      (aset seek-key moving-key-ix greatest)
      (set! moving-key-ix pinned-key-ix)
      (set! pinned-key-ix (- pinned-key-ix 1))
      (set! pinned-key (when (>= pinned-key-ix 0) (aget seek-key pinned-key-ix)))
      (.maintain this))
  (mark [this]
        (.mark iterator))

  ;; cljs.core.pr_str(cemerick.double_check.quick_check(1000, aurora.btree.intersection_prop))
  (dc/quick-check 10000 (trie-tree-prop 1))
  (dc/quick-check 10000 (trie-tree-prop 2))
  (dc/quick-check 10000 (trie-tree-prop 3))
  (dc/quick-check 100 (self-join-prop 1))
  (dc/quick-check 100 (self-join-prop 2))
  (dc/quick-check 100 (self-join-prop 3))


  (defn f []
