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

                                  [Float -> Float]
                                  [Integer -> Integer]
                                  [Long -> Long]))
(t/ann chebyshev-distance [Pos Pos -> Integer])
(defn chebyshev-distance
  "Chebyshev/chessboard distance between 2 points"
  [p1 p2]
  (max (Math/abs (- (get p1 :x) (get p2 :x)))
       (Math/abs (- (get p1 :y) (get p2 :y)))))

(t/ann distance-sq [Pos Pos -> t/AnyInteger])
(defn distance-sq

                        (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)
