   )
 
 (defn containing [& tests]
-  (fn [component]
-    (let [children (js->clj (.. component -props -children))
+  (fn -containing-pred [component]
+    (let [children (.. component -props -children)
           test-count (count tests)]
-      (if (sequential? children)
+      (if (= (type children) js/Array)
         ;; React annoyingly makes children = the single child element,
         ;; when there is only one, instead of a list of one
         (let [child-count (count children)]

  )

(defn sub-component [sub-component cursor]
  (fn [component]
    (let [expected-name (component-name sub-component)
          actual-name (component-name (:sub-component component))]
      (cond
       (not= sub-component (:sub-component component))
       {:msg "sub-component does not match"
        :expected expected-name :actual actual-name}

       (not= cursor (:cursor component))
       {:msg (str "sub-component cursor does not match for " expected-name)
        :expected cursor :actual (:cursor component)}

       :else true
       )


(defn -instrument [sub-component cursor _]
  {:sub-component sub-component
   :cursor cursor}
  )

(defn test-predicates
