    :depth depth
    :result (:result smallest)
    :smallest (:args smallest)})
-
-(defn not-falsey-or-exception?
-  "True if the value is not falsy or an exception"
-  [value]
-  (and value (not (instance? Throwable value))))
 
 (defn- shrink-loop
   "Shrinking a value produces a sequence of smaller values of the same type.

  (ct/report-trial property num-trials num-trials)
  {:result true :num-tests num-trials :seed seed})

(defn quick-check
  "Tests `property` `num-tests` times.


           depth 0]
      (if (empty? nodes)
        (smallest-shrink total-nodes-visited depth current-smallest)
        (let [[head & tail] nodes
              result (:result (gen/rose-root head))]
          (if (not-falsey-or-exception? result)
            ;; this node passed the test, so now try testing its right-siblings
            (recur tail current-smallest (inc total-nodes-visited) depth)
            ;; this node failed the test, so check if it has children,
            ;; if so, traverse down them. If not, save this as the best example
            ;; seen now and then look at the right-siblings
            ;; children
            (let [children (gen/rose-children head)]
              (if (empty? children)
                (recur tail (gen/rose-root head) (inc total-nodes-visited) depth)
                (recur children (gen/rose-root head) (inc total-nodes-visited) (inc depth))))))))))

(defn- failure
  [property failing-rose-tree trial-number size seed]
