 ;; Method implementations of `render`
 ;;
 
+(defmethod render `s/and [frame _ printer x]
+  (visit/visit (pop-trace printer) x))
+
+(defmethod render `s/or [frame _ printer x]
+  (visit/visit (pop-trace printer) x))
+
+(defmethod render `s/nilable [frame _ printer x]
+  (visit/visit (pop-trace printer) x))
+
 (defn- pretty-coll [printer open xs sep close f]
   (let [xform (comp (map-indexed #(f printer %1 %2))
                     (interpose sep))


(defmethod render `s/+ [frame _ printer x]
  (render-coll frame printer x))

                     (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)
    (visit/visit (pop-trace printer) x)
    (render-coll frame printer x)))

(defn- render-every [{[n] :steps :as frame} printer x]
  (if (map? x)
