                 (do (putils/dbg-println :warn "pamela.inheritance assoc-method method:"
                                         method-sym "has multiple methods with same signature" msig "\ncurrent will stay")
                     (putils/dbg-println :warn "current")
-                    (pprint (get msig result))
+                    (putils/dbg-println :warn (with-out-str (pprint (get msig result))))
                     (putils/dbg-println :warn "another")
-                    (pprint method))
+                    (putils/dbg-println :warn (with-out-str (pprint method))))
                 (merge result {msig method}))))
           {} m-vec))
 

                                 {} clist)]
    (methods-from-signature-map m-with-signature)))

(defn merge-bounds
  "Return new bounds with min and max values of either a or b"
  [a b]
  (let [la (first a)
        lb (first b)
        ua (second a)
        ub (second b)]
    [(apply min (remove nil? [la lb]))
     (apply max (remove nil? [ua ub]))]))

(defn merge-transition
  "More specific transition overrides specific transition.
  However, if they have :temporal-constraints, they are merged such that the

  (let [has-tc? (or (:temporal-constraints specific) (:temporal-constraints more-specific))
        trans (or more-specific specific)]
    (if has-tc?
      (conj trans {:temporal-constraints [{:type :bounds :value (pamela.tpn/merge-bounds (-> specific :temporal-constraints first :value)
                                                                              (-> more-specific :temporal-constraints first :value))}]
                   })
      trans)))
