        [~@fields]
        (new ~rname ~@field-values))))
 
-(defn- validate-fields
+(core/defn- validate-fields
   [case name fields]
   (when-not (vector? fields)
     (throw

  `(let [~name (js-this)]
     ~@body))

(defn- to-property [sym]
  (symbol (core/str "-" sym)))

(defn- warn-and-update-protocol [p type env]
  (when-not (= 'Object p)
    (if-let [var (cljs.analyzer/resolve-existing-var (dissoc env :locals) p)]
      (do

           (recur threaded (next forms)))
         x))))

(core/defn- ^{:dynamic true} assert-valid-fdecl
  "A good fdecl looks like (([a] ...) ([a b] ...)) near the end of defn."
  [fdecl]
  (when (empty? fdecl)
