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

                               lexicon
                               spec 0 index morph total-depth)
               ;; 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])
               (add-complements-to-bolts [:head :head :comp])
               (add-complements-to-bolts [:head :comp])
               (add-complements-to-bolts [:comp])))]
