         true
         (do
           (log/info (str "generate: generating from spec: "
-                         (strip-refs spec)))
+                         (strip-refs spec) " with max-total-depth: " max-total-depth))
           (let [expression (first (take 1 (generate-all spec grammar lexicon index morph 0
                                                         :max-total-depth max-total-depth
                                                         :truncate-children truncate-children)))]

                (first (take 1
                             (lazy-mapcat (fn [each-spec]
                                           (log/info (str "generate: generating from spec: "
                                                          each-spec))
                                           (let [expressions
                                                 (generate-all each-spec grammar lexicon index morph 0
                                                               :max-total-depth max-total-depth

             (truncate expr [[:head][:comp]])
             ;; else, don't truncate for efficiency (i.e. don't remove :head and :comp)
             expr))
         (->
          (lightning-bolts grammar lexicon spec 0 index morph total-depth :max-total-depth max-total-depth)
          (add-all-comps (take max-total-depth (repeatedly (fn [] :head)))
                         grammar lexicon index morph total-depth)))))

(defn lightning-bolts [grammar lexicon spec depth index morph total-depth
                       & {:keys [max-total-depth]
