 (declare hash-map list equiv-sequential)
 
 (extend-type nil
-  IEquiv
-  (-equiv [_ o] (nil? o))
-
   ICounted
-  (-count [_] 0)
-
-  IEmptyableCollection
-  (-empty [_] nil)
-
-  INext
-  (-next [_] nil)
-
-  IMap
-  (-dissoc [_ k] nil)
-
-  ISet
-  (-disjoin [_ v] nil)
-
-  IStack
-  (-peek [_] nil)
-  (-pop [_] nil)
-
-  IMeta
-  (-meta [_] nil)
-
-  IWithMeta
-  (-with-meta [_ meta] nil)
-
-  IKVReduce
-  (-kv-reduce [_ f init]
-    init)
-
-  IHash
-  (-hash [o] 0))
+  (-count [_] 0))
 
 ;; TODO: we should remove this and handle date equality checking
 ;; by some other means, probably by adding a new primitive type

(defn empty
  "Returns an empty collection of the same category as coll, or nil"
  [coll]
  (-empty coll))

(defn- accumulating-seq-count [coll]
  (loop [s (seq coll) acc 0]


    (string? o)
    (check-string-hash-cache o)

    (nil? o) 0

    :else
    (-hash o)))
