      (add-output! ts child-sp)
      (let [my-sum (summaries/summary ts) child-sum (summaries/summary (tree-summarizer child-sp))]
 ;       (util/assert-is (>= (summary/max-reward my-sum) (summary/max-reward child-sum)))  Cannot assert this -- see above.
-       (when-not (summary/>= my-sum child-sum) (summaries/summary-changed! ts))))
+       (when-not (summary/>= my-sum child-sum)
+         (summaries/summary-changed! ts))))
     
    summaries/Summarizable
    (summarize [s]

  (subproblem-name   [s])
  (input-set         [s])
  (output-set        [s])
  (tree-summarizer   [s] "Summarizer that includes children."))

(defn sp-str [sp] (format  "#<Subproblem$%h %s>" (System/identityHashCode sp) (subproblem-name sp)) )
(defmethod print-method angelic.search.implicit.fah_astar_eval2.Subproblem [ss o] (print-method (sp-str ss) o))


;; This subproblem is allowed to die, (incl. tree?!), replaced by refinements at sp1. 
(defn- make-pair-subproblem [stub sp1 sp2]
  (doto (make-simple-subproblem
         [::Pair (subproblem-name sp1) (subproblem-name sp2)]
         (input-set sp1) (output-set sp2)
         (fn [s] (summary/+ (summaries/summary sp1) (summaries/summary sp2) s))
         (fn [s inp] nil))    
    (setup-ordinary-subproblem! [sp1 sp2] [(tree-summarizer sp2)] (fn [s] (make-pair-subproblem stub sp1 s)))))

;; Short circuit means that right SP can go dead then back live. 
(defn- make-right-stub [left-sp right-stub right-stub-fn]
  (let [ret (traits/reify-traits [simple-watched cache-trait summaries/simple-node]  
