                           "@[" (string/join " " path) "]" "^" total-depth))
           (add-complement-to-bolt bolt path
                                   language-model (+ total-depth (count path))
-                                  :max-total-depth max-total-depth))
+                                  :max-total-depth max-total-depth
+                                  :truncate-children truncate-children))
         bolts)
        language-model
        total-depth
-       (rest comp-paths)))
+       (rest comp-paths)
+       truncate-children))
     bolts))
 
 (defn find-comp-paths-in [bolt path]

          (find-comp-paths-in bolt (concat path [:head])))))

(defn add-complement-to-bolt [bolt path language-model total-depth
                              & {:keys [max-total-depth]
                                 :or {max-total-depth max-total-depth}}]
  (log/debug (str "add-complement-to-bolt: " (show-bolt bolt path language-model)
                  "@[" (string/join " " path) "]" "^" total-depth))
  (let [index (:index language-model)

    (if truncate-children
      (->
       (lightning-bolts language-model spec 0 total-depth :max-total-depth max-total-depth)
       (add-all-comps language-model total-depth true)
       (truncate-expressions [[:head]]))
      (->
       (lightning-bolts language-model spec 0 total-depth :max-total-depth max-total-depth)
       (add-all-comps language-model total-depth false)))))

(defn add-all-comps [bolts language-model total-depth truncate-children]
  (log/trace (str "add-all-comps with (empty? bolts): " (empty? bolts)))
  (lazy-mapcat
   (fn [bolt]
     (add-all-comps-with-paths [bolt] language-model total-depth
                               (find-comp-paths-in bolt [:head])
                               truncate-children))
   bolts))

(defn add-all-comps-with-paths [bolts language-model total-depth comp-paths truncate-children]
  (log/trace (str "add-all-comps-with-paths with (empty? bolts): "
                  (empty? bolts)))
  (if (not (empty? comp-paths))
