   "Returns a new Rose tree whose values pass `pred`. Values who
   do not pass `pred` have their children cut out as well.
   Takes a list of roses, not a rose"
+  {:no-doc true}
   [pred [root children]]
   [root (clojure.core/map (partial rose-filter pred)
                           (clojure.core/filter (comp pred rose-root) children))])
 (defn rose-permutations
   "Create a seq of vectors, where each rose in turn, has been replaced
   by its children."
+  {:no-doc true}
   [roses]
   (apply concat
          (for [[rose index]

;; ---------------------------------------------------------------------------

(defn random
  ([] (Random.))
  ([seed] (Random. seed)))

(defn make-size-range-seq
  [max-size]
  (cycle (range 0 max-size)))


   {:gen generator-fn}))

(defn call-gen
  {:no-doc true}
  [{generator-fn :gen} rnd size]
  (generator-fn rnd size))

(defn gen-pure
  {:no-doc true}
  [value]
  (make-gen
    (fn [rnd size]
      value)))

(defn gen-fmap
  {:no-doc true}
  [k {h :gen}]
  (make-gen
    (fn [rnd size]
      (k (h rnd size)))))

(defn gen-bind
  {:no-doc true}
  [{h :gen} k]
  (make-gen
    (fn [rnd size]
