(defn
merge-spec-impl
"Do not call this directly, use 'merge'"
[forms preds gfn]
(reify
Specize
(specize* [s] s)
(specize* [s _] s)
Spec
(conform*
[_ x]
(let
[ms
(map
(fn* [p1__18562# p2__18563#] (dt p1__18562# x p2__18563#))
preds
forms)]
(if (some invalid? ms) :clojure.core/invalid (apply c/merge ms))))
(unform*
[_ x]
(apply
c/merge
(map (fn* [p1__18564#] (unform p1__18564# x)) (reverse preds))))
(explain*
[_ path via in x]
(apply
concat
(map
(fn*
[p1__18565# p2__18566#]
(explain-1 p1__18565# p2__18566# path via in x))
forms
preds)))
(gen*
[_ overrides path rmap]
(if
gfn
(gfn)
(gen/fmap
(fn* [p1__18567#] (apply c/merge p1__18567#))
(apply
gen/tuple
(map
(fn*
[p1__18568# p2__18569#]
(gensub p1__18568# overrides path rmap p2__18569#))
preds
forms)))))
(with-gen* [_ gfn] (merge-spec-impl forms preds gfn))
(describe*
[_]
(clojure.core/sequence
(clojure.core/seq
(clojure.core/concat
(clojure.core/list 'clojure.core/merge)
forms))))))