   [expr]
   `(let [start# (.getTime (js/Date.) ())
          ret# ~expr]
-     (prn (str "Elapsed time: " (- (.getTime (js/Date.) ()) start#) " msecs"))
+     (prn (core/str "Elapsed time: " (- (.getTime (js/Date.) ()) start#) " msecs"))
      ret#))

        prefix (protocol-prefix p)]
    `(let [x# ~x]
       (if (and x#
                (. x# ~(symbol (str "-" prefix)))        ;; Need prop lookup here
                (not (. x# (~'hasOwnProperty ~prefix))))
	 true
	 (cljs.core/type_satisfies_ ~psym x#)))))


(defn- build-positional-factory
  [rsym rname fields]
  (let [fn-name (symbol (core/str '-> rsym))]
    `(defn ~fn-name
       [~@fields]
       (new ~rname ~@fields))))

(defn- build-map-factory
  [rsym rname fields]
  (let [fn-name (symbol (core/str 'map-> rsym))
	ms (gensym)
	ks (map keyword fields)
	getters (map (fn [k] `(~k ~ms)) ks)]
