 
 (defprotocol IRemove
   (-remove! [x]))
-
-(defn- get-transition [x transition-name]
-  (let [spec (get-element-spec x)]
-    (when-not (string? spec)
-      (get (meta spec) transition-name))))
 
 (defn- dispose-node
   ([dom-node]


(defn remove! [x]
  (if (dom-node? x)
    (if-let [node-detaching (get-transition x :node-detaching)]
      (node-detaching x (fn [] (remove-dom-node x)))
      (remove-dom-node x))
    (-remove! x)))

;; ## Polyfills

;; (deftype ElementState [id disposed element-spec child-states])

(declare set-attr!)

(defn- reset-element-spec! [state spec tag]
  (when-let [on-disposed (.-disposed-callback state)]
