                                       lexicon
                                       spec 0 index)
                       ;; TODO: allow more than a fixed maximum depth of generation (here, 4 levels from top of tree).
-                      (add-complements-to-bolts [:head :head :head :comp] :top grammar lexicon index)
-                      (add-complements-to-bolts [:head :head :comp]       :top grammar lexicon index)
-                      (add-complements-to-bolts [:head :comp]             :top grammar lexicon index)
-                      (add-complements-to-bolts [:comp]                   :top grammar lexicon index))))))
+                      (add-complements-to-bolts [:head :head :head :comp] :top grammar lexicon index morph)
+                      (add-complements-to-bolts [:head :head :comp]       :top grammar lexicon index morph)
+                      (add-complements-to-bolts [:head :comp]             :top grammar lexicon index morph)
+                      (add-complements-to-bolts [:comp]                   :top grammar lexicon index morph))))))
   
 ;; TODO: add usage of rule-to-lexicon cache (rather than using lexicon directly)
 (defn lightning-bolt [grammar lexicon spec & [ depth index parent]]


              ;; else, no complements could be added to this bolt.
              (do
                (log/warn (str " add-complement took " run-time " msec, but found no lexical complements for " from-bolt ". Complements tried were: " complement-candidate-lexemes))
                ;; TODO: show warn about not finding ny phrasal complements, as well as not finding any lexical complements.
                (log/debug (str " fail-paths:"))
                (vec (map (fn [lexeme]

          (lazy-cat lexical phrasal)
          (lazy-cat phrasal lexical))))))

(defn add-complement [bolt path spec grammar lexicon cache morph]
  (let [input-spec spec
        cache (if (future? cache) @cache cache)
        from-bolt bolt ;; so we can show what (add-complement) did to the input bolt, for logging.
