           ::amp (c/and (accept-nil? p1)
                        (c/or (noret? p1 (preturn p1))
                              (let [ret (-> (preturn p1) (and-preds ps (next forms)))]
-                               (not= ret ::invalid))))
+                               (not (invalid? ret)))))
           ::rep (c/or (identical? p1 p2) (accept-nil? p1))
           ::pcat (every? accept-nil? ps)
           ::alt (c/some accept-nil? ps))))

               :as opts}
    gfn]
     (let [conform-into gen-into
           check? #(valid? pred %)
           kfn (c/or kfn (fn [i v] i))
           addcv (fn [ret i v cv] (conj ret cv))
           cfns (fn [x]

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