 
 (defmacro defcontext
   "Defines a context.
-  decl => docstring? [bindings*] before-body* (:after [state] after-body*)?"
+  decl => docstring? [bindings*] before-body* after-fn?
+  after-fn => :after [state] after-body*"
   [name & decl]
   (let [m {:name name, :ns *ns*}
         m (if (string? (first decl)) (assoc m :doc (first decl)) m)


(declare run-test-case compile-assertion)

(deftype Context [parents before after])

(deftype TestCase [contexts children] :as this
  clojure.lang.IFn
  (invoke [] (run-test-case this))

  "Truly lazy test execution strategy; uses (unchunked) map1."
  [map1 lazy-strategy])

(defn parallel-strategy
  "Parallel execution strategy; uses pmap."
  []
  [pmap parallel-strategy])

(defn parallel-upto
