   ([dom-node]
    ;(println "disposing" dom-node)
    (when-let [node-id (get-node-id dom-node)]
-     (when-let [state (aget element-state-lookup node-id)]
+     (when-let [state                                       ;;(aget element-state-lookup node-id)
+                (.-freactive-state dom-node)
+                ]
        (dispose-node node-id state)
        (when-let [parent-state (.-parent-state state)]
          (when-let [child-states (.-child-states parent-state)]

     (when-let [disposed-callback (.-disposed-callback state)]
       (disposed-callback))
     (when-not (identical? (aget child-key 0) "-")
       (js-delete element-state-lookup child-key)
       (goog.object/forEach (.-child-states state)
                            (fn [state child-key _]
                              (dispose-node child-key state)))))))


(defn- get-element-state [x]
  ;;(get element-state-lookup x)
  ;(when-let [node-id (get-node-id x)]
  ;  (aget element-state-lookup node-id))
  (.-freactive-state x)
  )

(extend-protocol IElementSpec
  boolean
