 
                   cellophane.protocols/IReactComponent
                   (~'-render [this#]
-                   (when-not @(:cellophaneclj$mounted? props#)
-                     (swap! (:cellophaneclj$mounted? props#) not))
                    (p/componentWillMount this#)
                    (p/render this#))
                   (~'-props [this]

                     cellophane.next/*shared*     (cellophane.next/shared this#)
                     cellophane.next/*instrument* (cellophane.next/instrument this#)
                     cellophane.next/*parent*     this#]
            ~@body))))}
   :defaults
   `{~'componentWillMount
     ([this#])
     ~'componentDidMount
     ([this#])
     ~'render
     ([this#])}})


              dt))]
    (->> dt (map reshape*) vec add-object-protocol add-defaults)))

(defn defui* [name forms]
  (let [{:keys [dt statics]} (collect-statics forms)
        [other-protocols obj-dt] (split-with (complement '#{Object}) dt)
