 
 ;; TODO: set stub to -inf here, simplify other code? 
 ;; TODO: efficiency?
-(defn- set-stub-output! [stub sp]
-  (assert (empty? (get-outputs stub)))
-  (let [b  (summaries/get-bound stub)
-        ts (tree-summarizer stub)]
-    (summaries/summary-changed-local! stub)    
+(defn- set-stub-output! [stb sp]
+  (assert (empty? (get-outputs stb)))
+  (assert (identical? (stub sp) stb)) 
+  (let [b  (summaries/get-bound stb)
+        ts (tree-summarizer stb)]
+    (summaries/summary-changed-local! stb)    
     (summaries/connect-subsumed! ts sp)
     (connect-and-watch! ts sp
        (fn [child-sp]

          #(set-stub-output! ret (make-pair-subproblem ret left-sp %)))
        ret))))

;; Note, potential to learn about additioan lsubsumption here, however, must be taken into account.
;; TODO: name does not match wrapping names.
(defn- make-pair-stub1 [nm left-stub right-stub-fn]
  (if-let [left-sp (get-stub-output left-stub)]
    (make-pair-stub2 left-sp (right-stub-fn (output-set left-sp)))

          (connect-and-watch-stub! ret
            (make-pair-stub2 lo (right-stub-fn (output-set lo)))
            true
            #(set-stub-output! ret (make-echo-subproblem ret %))))) ;; eek!
      ret)))

(defmethod get-stub :Pair [[_ left-name right-name :as n] inp]
