                   (loop [ret x i 0]
                     (if (< i (count specs))
                       (let [nret (conform* (specs i) ret)]
-                        (if (= ::invalid nret)
+                        (if (invalid? nret)
                           ::invalid
                           ;;propagate conformed values
                           (recur nret (inc i))))

                                    #(tag % k)
                                    (gensub p overrides (conj path k) rmap (list 'method form k))))))))
                      gs (->> (methods @mmvar)
                              (remove (fn [[k]] (= k ::invalid)))
                              (map gen)
                              (remove nil?))]
                  (when (every? identity gs)

                     (loop [ret (init x), i 0, [v & vs :as vseq] (seq x)]
                       (if vseq
                         (let [cv (dt pred v nil)]
                           (if (invalid? cv)
                             ::invalid
                             (recur (add ret i v cv) (inc i) vs)))
                         (complete ret))))
