   (dc/quick-check 10000 (self-join-prop 1))
   (dc/quick-check 10000 (self-join-prop 2))
   (dc/quick-check 10000 (self-join-prop 3))
+  (dc/quick-check 10000 (product-join-prop 1))
 
 
   (defn f []

         (assert (> (alength marked-nodes) 0))
         (assert (> (alength marked-ixes) 0))
         (set! node (.pop marked-nodes))
         (set! ix (.pop marked-ixes))))

(defn iterator [tree]
  (loop [node (.-root tree)]

      (recur (aget (.-children node) 0)))))

;; trie view of a tree
(deftype Trieterator [iterator ^:mutable seek-key ^:mutable pinned-key marked-seek-keys marked-pinned-keys ^:mutable moving-key-ix ^:mutable end? key-len]
  Object
  (key [this]
       (when (false? end?)
