    (update-in m ks (fn [coll] (reduce f v coll)))))
 
 (t/ann filter-in (t/All [x]
-                   (t/IFn [x (t/Vec t/Any) (t/IFn [t/Any -> t/Any]) -> x])))
+                   (t/IFn [x (clojure.lang.Associative t/Any t/Any) (t/IFn [t/Any -> t/Any]) -> x])))
 (defn filter-in
   [m ks f]
   (fn-in (fn [coll _] (if (vector? coll)

                        (some f coll))) m ks nil))

(t/ann update-in-matching (t/All [a b]
                            (t/IFn [a (t/Vec t/Any) (t/IFn [b -> Boolean]) (t/IFn [b -> t/Any]) -> a])))
(defn update-in-matching
  [m ks p f]
  (if (fn? p)

                        (remove f coll))) m ks nil))

(t/ann some-in (t/All [x]
                 (t/IFn [x (clojure.lang.Associative t/Any t/Any) (t/IFn [t/Any -> t/Any]) -> x])))
(defn some-in
  [m ks f]
  (fn-in (fn [coll _] (if (vector? coll)
