                   
                   true ;; generate children that are leaves before children that are trees.
                   (lazy-cat (child-lexemes) (child-trees)))]
-            (assoc-children tree children f)))
+            (assoc-children tree children frontier-path)))
          [tree])
        (grow (rest trees))))))
 

   (filter #(not (= :fail %)))
   (map #(u/assoc-in! % [::done?] true))))

;; TODO: use recur: should be more efficient(?)
(defn- assoc-each-default [tree children path]
  (if (not (empty? children))
    (lazy-cat

    ;; 1) branching to a new subtree, or
    ;; 2) terminating with a lexeme (leaf node).
    (let [tree (first trees)
          frontier-path (frontier tree)
          depth (count frontier-path)
          child-spec (u/get-in tree frontier-path)
          child-lexemes #(get-lexemes child-spec)
          child-trees #(parent-with-head child-spec depth)]
      (when println? (println (str "grow at:" (morph-ps tree))))
      (log/debug (str "grow at:" (morph-ps tree)))
      (lazy-cat
       (if (not (empty? frontier-path))
         (grow
          (let [children
                (cond
