 ;; TODO: remove ss ?
 ;; Note: this is the only place logic depends on summary.  Potential for problems? 
 (defn- make-pair-subproblem [subsuming-sp pair-stub left-sp right-sp]
+;  (println "mps" pair-stub)
   (let [expand-right? (not (can-split? left-sp) ) #_(terminal? left-sp)
         [ss watch stub-f]
         (if expand-right?

   ^ArrayList outputs (ArrayList.)]
  []
  Watched
  (add-watcher! [sw w] #_(println :AW sw w)
    (.add watchers w)
    (doseq [o (doall (seq outputs))] (w o))#_ (println :WF sw))
  (add-output! [sw o] #_ (println :AO sw o)
    (.add outputs o)
    (doseq [w (doall (seq watchers))] (w o)) #_(println :OF sw))
  (get-outputs [sw] (doall (seq outputs))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn- choose-leaf [verified-summary]
 ;  (println "VS"  verified-summary)  (def *sum* verified-summary)  (Thread/sleep 10)
  (->> (summary/extract-leaf-seq verified-summary (comp empty? summary/children))
       (map summary/source)
       (filter can-evaluate?)
