 (defmacro def-overload [sym arg-list & body]
   {:pre [(symbol? sym)]}
   (let [p (spec/conform ::def-overload-arg-list arg-list)]
-    (if (= p ::spec/invalid)
+    (if (= p ::speinvalid)
       (throw (ex-info
               "Bad def-overload arg list"
               {}))

        pos-failures (filter (complement pred)
                             (:pos arg-spec))
        neg-failures (filter pred (:neg arg-spec))]
    (if (c/and (empty? pos-failures)
               (empty? neg-failures))
      (assoc arg-spec :valid? true)
      (merge arg-spec


(def-arg-spec map-arg (pred map?))

(def-arg-spec empty-arg (pred (fn [x] (and (coll? x)
                                             (empty? x)))))

