 
 (defn config->map
   "Converts an instance of `Config` to a more user-friendly clojure map"
-  [config]
+  [^Config config]
   {:pre [(instance? Config config)]
    :post [(map? %)]}
   (-> config

(defn strip-quotes
  "Given a string read from a config file, check to see if it begins and ends with
  double-quotes, and if so, remove them."
  [s]
  {:pre [(string? s)]
   :post [(string? %)
          (not (and (.startsWith % "\"")

(defn nested-java-map->map
  "Given a (potentially nested) java Map object read from a config file,
  convert it (potentially recursively) to a clojure map with keywordized keys."
  [^Map m]
  {:pre [(instance? Map m)]
   :post [(map? %)
          (every? keyword? (keys %))]}
