         trace
         => expected-trace)
 
-      (so/print-tree trace)
-
-      #_ (fact "string output is correct"
-           (-> trace
-               mt/tree->string
-               t-utils/replace-ansi)
-           => ["\n " [:red] "v " [:bg-black :red] "com.billpiel.mem-tracer.test.ns1/func1  " [:white] ":11" [nil] "\n " [:red] "| " [:yellow] ":a" [:bold-off] "" [nil] "\n " [:red] "| returns => " [:yellow] ":a" [:bold-off] "\n " [:red] "|" [:yellow] "v " [:bg-black :yellow] "com.billpiel.mem-tracer.test.ns1/func2  " [:white] ":12" [nil] "\n " [:red] "|" [:yellow] "| " [:yellow] ":a" [:bold-off] "" [nil] "\n " [:red] "|" [:yellow] "| returned => " [:yellow] ":a" [:bold-off] "\n " [:red] "|" [:yellow] "^ " [nil] "\n " [:red] "| " [:bg-black :red] "com.billpiel.mem-tracer.test.ns1/func1  " [:white] ":11" [nil] "\n " [:red] "| " [:yellow] ":a" [:bold-off] "" [nil] "\n " [:red] "| returned => " [:yellow] ":a" [:bold-off] "\n " [:red] "^ " [nil] "\n\n  " [nil] "\n"])
+
+      (fact "string output is correct"
+        (-> trace
+            mt/tree->string
+            t-utils/replace-ansi)
+        => ["\n " [:red] "v " [:bg-black :red] "com.billpiel.mem-tracer.test.ns1/func1  " [:white] ":11" [nil] "\n " [:red] "| " [:yellow] ":a" [:bold-off] "" [nil] "\n " [:red] "| returns => " [:yellow] ":a" [:bold-off] "\n " [:red] "|" [:yellow] "v " [:bg-black :yellow] "com.billpiel.mem-tracer.test.ns1/func2  " [:white] ":12" [nil] "\n " [:red] "|" [:yellow] "| " [:yellow] ":a" [:bold-off] "" [nil] "\n " [:red] "|" [:yellow] "| returned => " [:yellow] ":a" [:bold-off] "\n " [:red] "|" [:yellow] "^ " [nil] "\n " [:red] "| " [:bg-black :red] "com.billpiel.mem-tracer.test.ns1/func1  " [:white] ":11" [nil] "\n " [:red] "| " [:yellow] ":a" [:bold-off] "" [nil] "\n " [:red] "| returned => " [:yellow] ":a" [:bold-off] "\n " [:red] "^ " [nil] "\n\n  " [nil] "\n"])
 
       (fact "remove trace"
         (mt/ws-remove-trace-ns! 'com.billpiel.mem-tracer.test.ns1)
         (com.billpiel.mem-tracer.test.ns1/func1 :b)
         (mt/ws-deref!) => (assoc expected-trace
-                                        :traced #{})))
+                                 :traced #{})))
 
     (mtt/untrace-ns* 'com.billpiel.mem-tracer.test.ns1)))
 

- rendering strings is deadly slow?
- use pmap all over the place?
  -- add pmap mode to walk18???
- ws-load bug???
  = 'sour1 or (delay $ws/sour1) works

  sourcerer.user> (mt/ws-load!)
  ArityException Wrong number of args (0) passed to: core$ws-load-BANG-  clojure.lang.AFn.throwArity (AFn.java:437)

  sourcerer.user> (mt/ws-load! $ws/sour1)
  ClassCastException clojure.lang.PersistentArrayMap cannot be cast to java.util.concurrent.Future  clojure.core/deref-future (core.clj:2108)

  sourcerer.user> (mt/ws-load! :sour1)
  ClassCastException clojure.lang.Keyword cannot be cast to java.util.concurrent.Future  clojure.core/deref-future (core.clj:2108)

- cursors
   - bisect recording trees to find bugs
- split ns and fn name in trace rec and output

                                                    [1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0])
    (let [trace (mt/ws-deref!)]

      (fact "string output is correct"
        (->> trace
             mt/tree->string
             t-utils/replace-ansi)
        => ex-o1/expected1))

    (mtt/untrace-ns* 'com.billpiel.mem-tracer.test.ns1)))

