               (filter (fn [result]
                         (not (fail? result)))
                       (map (fn [complement]
-                             (let [debug (log/trace (str "Trying complement:" (morph complement)))
+                             (let [debug (log/debug (str "Trying lexical complement:" (wrapped-morph morph complement)))
                                    result
                                    (unifyc bolt
                                            (path-to-map path

   [clojure.tools.logging :as log]
   [dag-unify.core :refer (dissoc-paths get-in fail? fail-path-between lazy-shuffle ref? remove-false 
                                        remove-top-values-log strip-refs show-spec unifyc)]))

(def concurrent false)
(declare path-to-map)
(declare add-complement)


(declare lightning-bolt)
(declare generate-all)

(defn show-as-tree [structure language-feature]
  (cond
    (and (map? structure)
         (or (get-in structure [:a])
             (get-in structure [:b])))
    (str "[" (get-in structure [:rule]) " "
         (show-as-tree (get-in structure [:a]) language-feature)
         " "
         (show-as-tree (get-in structure [:b]) language-feature)
         "]")

    (and (map? structure)
         (get-in structure [language-feature])
         (empty? (get-in structure [language-feature])))
    (str "'" "--" "'")

    (and (map? structure)
         (get-in structure [language-feature]))
    (str "'" (get-in structure [language-feature]) "'")

    true
    (str "??:" structure)))

(defn wrapped-morph [morph-fn structure]
  (if morph-fn
