   [language-model spec depth total-depth
                        & {:keys [max-total-depth]
                           :or {max-total-depth max-total-depth}}]
-  (log/debug (str "lightning-bolts: start: spec: " (spec-info spec)))
   (let [grammar (:grammar language-model)
         depth (if depth depth 0)
         ;; this is the relative depth; that is, the depth from the top of the current lightning bolt.

                     ;; and candidate head must be copied.
                     (log/warn (str "tried: " (count subset) " lexical candidates with spec:"
                                    (strip-refs spec) " and all of them failed as heads of parent:" (get-in parent [:rule]))))
                   (log/trace (str "returning bolts: count: " (count result)))
                   result)))
             (filter #(= false
                         (get-in % [:head :phrasal] false))

          phrasal ;; 2. generate list of all phrases where the head child of each parent is itself a phrase.
          (if (and (< total-depth max-total-depth)
                   (= true (get-in spec [:head :phrasal] true)))
            (lazy-mapcat (fn [parent]
                           (over/overh
                            parent
                            (lightning-bolts language-model (get-in parent [:head])
                                             (+ 1 depth) (+ 1 total-depth)
                                             :max-total-depth max-total-depth)))
                         (filter #(= true
                                     (get-in % [:head :phrasal] true))
                                 parents)))]
      (filter
       (fn [bolt]
         (any-possible-complement?
