 (defmacro ^{:private true} assert-args [fnname & pairs]
   `(do (when-not ~(first pairs)
          (throw (IllegalArgumentException.
-                  ~(str fnname " requires " (second pairs)))))
+                  ~(core/str fnname " requires " (second pairs)))))
      ~(let [more (nnext pairs)]
         (when more
           (list* `assert-args fnname more)))))

  ([a i]
     (list 'js* "(~{}[~{}])" a i))
  ([a i & idxs]
     (let [astr (apply str (repeat (count idxs) "[~{}]"))]
      `(~'js* ~(str "(~{}[~{}]" astr ")") ~a ~i ~@idxs))))

(defmacro aset [a i v]
  (list 'js* "(~{}[~{}] = ~{})" a i v))

		  `(~'-pr-seq [this# opts#]
			      (let [pr-pair# (fn [keyval#] (pr-sequential pr-seq "" " " "" opts# keyval#))]
				(pr-sequential
				 pr-pair# (core/str "#" ~(name rname) "{") ", " "}" opts#
				 (concat [~@(map #(list `vector (keyword %) %) base-fields)] 
					 ~'__extmap))))
		  ])]
