 
 (defn stop-component!
   "Stops the given `component` of the given `system`."
-  [^IPersistentMap system-map ^IComponent component]
+  [#?(:clj ^IPersistentMap) system-map
+   #?(:clj ^IComponent)     component]
   (reduce stop-component!
           (update-in system-map
                      [:components (hcomp/get-name component)]

   [hellhound.logger           :as log]
   [hellhound.component        :as hcomp])

  (:import
   (hellhound.component IComponent)
   (clojure.lang IPersistentMap
                 PersistentArrayMap
                 PersistentVector)))

;; Main storage for system data.
(def system (atom {}))

  TODO: More explaination."
  {:public-api true
   :added      1.0}
  [#?(:clj ^IPersistentMap) system-map]
  (if-not (s/valid? ::system-map system-map)
    (throw (ex-info "Provided system is not valid"
                    {:cause (s/explain-data ::system-map system-map)})))
