    #(let [n (second (subproblem-name %))] (when-not (= (first n) :noop) n))))
 
 (defn- get-root-subproblem [inp-set fs]
-  (let [root-stub (make-atomic-stub nil inp-set fs)
+  (let [root-stub (get-atomic-stub nil inp-set fs)
         ret       (atom nil)]
     (add-watcher! root-stub (fn [root] (reset! ret root)))
     (evaluate! root-stub)

  (when subsuming-sp (summaries/connect! child (tree-summarizer subsuming-sp) true)))

;; Note: this is double-stage to lazily generate children.  Could be simpler single-stage.
(defn- make-atomic-stub [subsuming-sp inp-set function-set]
  (let [state (atom :ready) ;; set to [out-set reward] after first eval, then :go after second.
        ret
        (traits/reify-traits
         [(simple-stub [:Atomic (fs/fs-name function-set) #_ inp-set] inp-set)
          simple-watched simple-cached-node]
         summaries/Summarizable
         (summarize [s]



(defn implicit-fah-a*-eval2 [henv]
  (binding [*decompose-cache* (when *decompose-cache* (HashMap.))]
   (->> (fs/make-init-pair henv)
        (apply get-root-subproblem)
        solve)))

; (do (use '[angelic env hierarchy] 'angelic.domains.nav-switch 'angelic.search.implicit.fah-astar-expand 'angelic.search.implicit.fah-astar-eval 'angelic.search.implicit.fah-astar-eval2 'angelic.domains.discrete-manipulation) (require '[angelic.search.explicit.hierarchical :as his]))

