     (alength (time (iterator->keys j)))
   )
 
-  (let [tree1 (tree 10)
-        _ (.assoc! tree1 #js ["a" "b"] 0)
-        _ (.assoc! tree1 #js ["b" "c"] 0)
-        _ (.assoc! tree1 #js ["c" "d"] 0)
-        _ (.assoc! tree1 #js ["d" "b"] 0)
-        tree2 (tree 10)
-        _ (.assoc! tree2 #js ["b" "a"] 0)
-        _ (.assoc! tree2 #js ["c" "b"] 0)
-        _ (.assoc! tree2 #js ["d" "c"] 0)
-        _ (.assoc! tree2 #js ["b" "d"] 0)
-        join-itr (join #js [(iterator tree1) (iterator tree2)] 3 #js [#js [true false true]
-                                                                      #js [false true true]])
-        ]
-     (map vec (iterator->keys join-itr))
-    )
+
+
+
 
  )
+
+(enable-console-print!)
+
+(let [tree1 (tree 10)
+      _ (.assoc! tree1 #js ["a" "b"] 0)
+      _ (.assoc! tree1 #js ["b" "c"] 0)
+      _ (.assoc! tree1 #js ["c" "d"] 0)
+      _ (.assoc! tree1 #js ["d" "b"] 0)
+      tree2 (tree 10)
+      _ (.assoc! tree2 #js ["b" "a"] 0)
+      _ (.assoc! tree2 #js ["c" "b"] 0)
+      _ (.assoc! tree2 #js ["d" "c"] 0)
+      _ (.assoc! tree2 #js ["b" "d"] 0)
+      s (solver #js [(contains (iterator tree1) #js [0 2])
+                     (contains (iterator tree2) #js [1 2])]
+                3)
+      ]
+  [(.next s) (.next s) (.next s)]
+  )
+

            [cemerick.double-check.properties :as prop :include-macros true]
            [cemerick.pprng :as pprng]
            clojure.set)
  (:require-macros [aurora.macros :refer [debug apush apush* amake aclear typeof set!! dofrom]]))

;; COMPARISONS


  (split [this]
         ;; split by value of next unset var
         (loop [i 0]
           (if (< i (alength ixes))
             (if (identical? (aget lower i) (aget upper i))
               (recur (+ i 1))
               (do
                 (apush pushed|split false)
                 (apush split-uppers (aclone upper))
                 (let [old-lo (aget lower i)
                       new-lo (aget (.seek-gte iterator lower) i)]
                   (if (val-lt new-lo old-lo)
                     (aset upper i old-lo)
                     (aset upper i new-lo)))
                 (apush split-lowers (aclone upper)) ;; the lower for right-hand branch is the next key after the upper for the left-hand branch
                 true))
             false)))
