   (-meta [coll] meta)
 
   ISeq
-  (-first [coll] (-first front))
+  (-first [coll] (first front))
   (-rest  [coll]
     (if-let [f1 (next front)]
       (PersistentQueueSeq. meta f1 rear nil)

  IAssociative
  (-assoc [coll key val]
    (let [v-pos (+ start key)]
      (build-subvec meta (-assoc v v-pos val)
               start (max end (inc v-pos))
               nil)))


  'added'. (conj nil item) returns (item).  The 'addition' may
  happen at different 'places' depending on the concrete type."
  ([coll x]
    (if-not (nil? coll)
      (-conj coll x)
      (list x)))
  ([coll x & xs]
    (if xs
      (recur (conj coll x) (first xs) (next xs))
      (conj coll x))))

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