      (prim-seq array i)))
 
 (extend-type array
-  ICounted
-  (-count [a] (alength a))
-
   IReduce
   (-reduce [col f] (array-reduce col f))
   (-reduce [col f start] (array-reduce col f start)))

           (aget coll n)
           not-found)
         
         :else
         (linear-traversal-nth coll (.floor js/Math n) not-found))
       not-found)))

  "Returns the number of items in the collection. (count nil) returns
  0.  Also works on strings, arrays, and Maps"
  [coll]
  (if-not (nil? coll)
    (cond
      (satisfies? ICounted coll false)
      (-count ^not-native coll)

      (array? coll)
      (alength coll)
    
      (string? coll)
      (alength coll)

      (type_satisfies_ ICounted coll)
      (-count coll)

      :else (accumulating-seq-count coll))
    0))

(defn- linear-traversal-nth
  ([coll n]
