                                                            (map #(morph %1)
                                                                 result))))
                               (if (not (empty? candidate-lexemes))
-                                (log/warn (str "all candidate lexemes failed!"))))
+                                (log/warn (str "all " (count candidate-lexemes) " candidate lexeme(s):"
+                                               (string/join ","
+                                                            (map morph candidate-lexemes))
+                                               " failed for parent: " (get-in parent [:rule]) " with spec: " (strip-refs spec)))))
                             result))))
                     candidate-heads)
 

                                                  candidate-lexemes))))
                          (let [result
                                (if (empty? candidate-lexemes)
                                  (log/warn (str "no head lexemes found for parent: " (:rule parent) " and spec: "
                                                 (strip-refs spec)))
                                  (over/overh parent
                                              (map copy (lazy-shuffle candidate-lexemes))
                                              morph))]


              ;; else, no complements could be added to this bolt: Throw an exception
              (let [log-limit 1000
                    log-fn (fn [message] (log/warn message))
                    throw-exception-if-no-complements-found true
                    message
                    (str " add-complement to " (get-in bolt [:rule]) " at path: " path
