     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  "]")))))) )

head of its parent. generate (above) 'decorates' each returned lightning bolt
of this function with complements."
  (if (or (vector? spec) (seq? spec))
    (mapcat (fn [each-spec]
              (lightning-bolt grammar lexicon each-spec depth index morph total-depth))
            spec)
    (do
      (log/debug (str "lightning-bolt(depth=" depth "; total-depth=" total-depth "; cat=" (get-in spec [:synsem :cat]) "; spec=" (strip-refs spec) ")"))
      (let [morph (if morph morph (fn [input] (get-in input [:rule] :default-morph-no-rule)))
            depth (if depth depth 0)        
            parents (candidate-parents grammar spec)]

                                results (filter #(not (nil? %))
                                                (over/overh parent (mapfn copy candidate-lexemes)))]
                            (log/debug (str "lightning-bolt: " (get-in parent [:rule])
                                            ": first candidate head lexeme:"
                                            (let [fo (morph (first candidate-lexemes))]
                                              (if (or (nil? fo)
                                                      (= '' (trim fo)))
                                                (str
                                                 "'"
                                                 (get-in (first candidate-lexemes)
                                                         [:english :english])
                                                 "'")
                                                (str fo)))))
                            results)))
                      parents)
              phrasal ;; 2. generate list of all phrases where the head child of each parent is itself a phrase.
