      (^void added [this #^"[Lorg.eclipse.core.runtime.IExtensionPoint;" extension-points]
        (doseq [^IExtensionPoint ep extension-points] (trace :support/hover (str "IRegistryEventListener added extension point with id: " (.getLabel ep))))
        (trace :support/hover "Resetting hovers...")
-       (swap! (state-atom) set-state-dirty)
+       (swap! (force state-atom) set-state-dirty)
        (descriptors-update!)
        ;; I need some protection because here i might not have active editor
        (some-> (CCWPlugin/getClojureEditor) reset-default-hover-on-editor!))

(defn- descriptors-update!
  "Updates the descriptors. Swaps in a new state, if necessary, returning the new one."
  []
  (if (state-dirty? @(state-atom))
    (let [new-state (swap! (state-atom) swap-descriptors-in-state (load-descriptors!))]
      (trace :support/hover (str "State dirty, loaded:\n" new-state))
      new-state)
    (do (trace :support/hover (str "State NOT dirty, returning:\n" @(state-atom)))
        @(state-atom))))


;;;;;;;;;;;;;;;;;

     (^void added [this #^"[Lorg.eclipse.core.runtime.IExtension;" extensions]
       (doseq [^IExtension ex extensions] (trace :support/hover (str "IRegistryEventListener added extension with id: " (.getLabel ex))))
       (trace :support/hover "Resetting hovers...")
       (swap! (force state-atom) set-state-dirty)
       (descriptors-update!)
       ;; I need some protection because here i might not have active editor
       (some-> (CCWPlugin/getClojureEditor) reset-default-hover-on-editor!))
