A bug:
(defn- retag [x v]
(assoc (vec x) 0 v))
(defmulti command first)
(s/form (s/multi-spec command retag))
=> (clojure.spec.alpha/multi-spec current.ns/command #object[current.ns$retag 0x708d0436 current.ns$retag@708d0436])
;; should be something like
=> (clojure.spec.alpha/multi-spec current.ns/command current.ns/retag)