   "Do not call this directly, use 'merge'"
   [forms preds gfn]
   (reify
+   Specize
+   (specize* [s] s)
+   (specize* [s _] s)
+   
    Spec
    (conform* [_ x] (let [ms (map #(dt %1 x %2) preds forms)]
                      (if (some invalid? ms)

  (specize* ([s] (specize* (reg-resolve! s)))
            ([s _] (specize* (reg-resolve! s))))

  clojure.spec.Spec
  (specize* ([s] s)
            ([s _] s))

  Object
  (specize* ([o] (spec-impl ::unknown o nil nil))
            ([o form] (spec-impl form o nil nil))))

(defn- specize
  ([s] (specize* s))
  ([s form] (specize* s form)))

(defn invalid?
  "tests the validity of a conform return value"

      (ident? pred) (cond-> (the-spec pred) gfn (with-gen gfn))
      :else
      (reify
       Specize
       (specize* [s] s)
       (specize* [s _] s)
       
       Spec
       (conform* [_ x] (let [ret (pred x)]
                         (if cpred?
