 (defn add-to-bolt-at-path
   "bolt + path => partial trees"
   [bolt path model]
-  (let [complements (gen (get-in bolt path) model 0 nil path)]
+  (let [complements (gen (get-in bolt path) model 0)]
     (if (empty? complements)
       (let [error-message
             (str "(improve grammar): no complements found for: "

              ;; ..otherwise it's a phrase, so return the lazy
              ;; sequence of adding all possible complements at every possible
              ;; position at the bolt.
              (if true
                (add-comps-to-bolt bolt model
                                   (reverse (comp-paths depth)))
                [bolt])))
           (gen spec model depth
                (rest bolts)
                at-path)))
        (if (not (= false (get-in spec [:phrasal] true)))
          (gen spec model (+ 1 depth) nil at-path))))))

(defn get-bolts-for [model spec depth]
  (let [result


(defn gen
  "Return a lazy sequence of every possible tree given a specification and a model."
  [spec model depth & [from-bolts]]
  (log/trace (str "gen@" depth "; spec=" (show-spec spec)))
  (when (< depth max-depth)
    (let [bolts (or from-bolts
