   "Prints a single object to a string, observing all the
   options given in opts"
   [obj opts]
-  (let [sb (goog.string.StringBuffer.)]
+  (let [sb (gstring/StringBuffer.)]
     (loop [coll (seq (pr-seq obj opts))]
       (when coll
         (.append sb (first coll))


(ns cljs.core
  (:require [goog.string :as gstring]
            [goog.object :as gobject]
            [goog.string.StringBuffer :as gsb]))

(defprotocol ICounted
  (-count [coll] "constant time count"))

(deftype NeverEquiv []
  IEquiv
  (-equiv [o other] false))

(def ^:private never-equiv (NeverEquiv.))

(defn- equiv-map
