 (defmethod apply-pred := [[_ pred] value] (pred value))
 (defmethod apply-pred :=> [[_ pred] value] (= (cond
                                                 (map? value) :MAPP
-                                                (seq? value) :SEQQ
-                                                (vector? value) :SEQQ
+                                                (sequence-like? value) :SEQQ
                                                 :else :_____BAD)
                                               pred))
 

        (set? coll))
    (cons :SEQQ (map vector (range) (map seqify coll)))
    :else coll))

(defn map?? [x]
  (and (or (seq? x) (vector? x))

                     (fn [[k v]]
                       (type-check-key-value parent-type k v (assoc state :parent-value value))))]
      (cond
        (map? value)
        (concat (check-required-keys parent-type value state) (f value))
        (sequence-like? value)
        (f (map vector (range) value))
        :else (throw (Exception. (str "Expected compound type: " (class value)
                                      " is not a Map, Vector, or Sequence")))))))

