     false))
 
 (defn show-bolt [bolt path morph]
-  (if (not (empty? path))
-    (str (get-in bolt [:rule])
-         " '" (morph bolt) "' "
-         (let [rest-str (show-bolt (get-in bolt [:head]) (rest path) morph)]
-           (if (not (nil? rest-str))
-             (str " -> " rest-str)))))) 
+  (if (nil? bolt)
+    (exception (str "don't call show-bolt with bolt=null."))
+    (if (not (empty? path))
+      (str "[" (get-in bolt [:rule])
+           " '" (morph-with-recovery morph bolt) "' "
+           (let [rest-str (show-bolt (get-in bolt [:head]) (rest path) morph)]
+             (if (not (nil? rest-str))
+               (str " -> " rest-str  "]")))))) )

          (if (lexemes-before-phrases total-depth)
            (concat lexical phrasal)
            (concat phrasal lexical)))))))

(defn add-complement [bolt path spec grammar lexicon cache morph depth total-depth]
  (log/debug (str "add-complement: " (show-bolt bolt path morph)))

                morph))))

(defn generate-all [spec grammar lexicon index morph & [total-depth]]
  (log/debug (str "generate-all: generating from spec with cat "
                  (get-in spec [:synsem :cat])))
  (if (= false (get-in spec [:phrasal] true))
    (exception (str "do not call generate-all with spec:[phrasal=true]"))
    ;; else, phrasal:
    (let [total-depth (if total-depth total-depth 0)
          add-complements-to-bolts
          (fn [bolts path]
            (log/debug (str "generate-all: "
                            "add-complements-to-bolts: "
                            (show-bolt (first bolts) path morph)
                            "@" path))
            (mapcat
             #(if (not (= :none (get-in % path :none)))
                (lazy-seq (add-complement % path :top grammar lexicon index morph 0 (+ total-depth (count path))))
