 (defn- render-next [printer x]
   (visit/visit (pop-trace printer) x))
 
-(defmethod render `s/spec [frame _ printer x]
-  (render-next printer x))
-
-(defmethod render `s/and [frame _ printer x]
-  (render-next printer x))
-
-(defmethod render `s/or [frame _ printer x]
-  (render-next printer x))
-
-(defmethod render `s/nilable [frame _ printer x]
+(defmethod render `s/spec [frame printer x]
+  (render-next printer x))
+
+(defmethod render `s/and [frame printer x]
+  (render-next printer x))
+
+(defmethod render `s/or [frame printer x]
+  (render-next printer x))
+
+(defmethod render `s/nilable [frame printer x]
   (render-next printer x))
 
 (defn- pretty-coll [printer open xs sep close f]

(def ^:dynamic *highlighting-mark* "!!!")

(defmulti render
  (fn [{:keys [spec]} f printer x] (when (seq? spec) (first spec))))
(defmethod render :default [_ f printer x]
  (let [spec (-> (:trace printer) first :spec)
        msg (str "spec " spec
                 " must have its own method implementation of " `render)]

                     (visit/visit (cond-> printer (= i n) pop-trace) x)))]
     (pretty-coll printer open x sep close each-fn))))

(defmethod render `s/tuple [{:keys [steps] :as frame} printer x]
  (if (empty? steps)
    (render-next printer x)
    (render-coll frame printer x)))
