                          true)]
          (if (empty? comp-paths)
            (do
-             (log/debug (str "complete tree: " ((:morph-ps model) bolt)))
+             (log/trace (str "add-comps done with this bolt: " ((:morph-ps model) bolt)))
              [bolt]) ;; done: we've added all the comps to the bolt, so just return the bolt as a singleton vector.
            ;; else, more comp-paths to go.
            (flatten

     (clojure.core/take
      take
      (reduce concat
              (pmap #(do
                       (log/trace (str "add-bolt-at:" ((:morph-ps language-model) %)))
                       (let [result (filter (fn [x] (not (= :fail x)))
                                            (add-bolt-at % % [] % language-model depth max-depth truncate-children take))]
                         result))
                    (lightning-bolts language-model spec 0 max-total-depth))))
     ((fn [seq]
        (if (= take 1)
          (first seq) ;; if caller only wants one, return just that one, rather than a singleton list.

                                  (log/trace (str "trying parent: " (:rule parent) " with lexical head:"
                                                  ((:morph language-model) %)))
                                  (over/overh parent %))
                               (lazy-seq (shufflefn subset)))]
                   (if (and (not (empty? subset)) (empty? result)
                            (> (count subset)
                               50))
