    [cheshire.core :as json]
    [clojure.data.codec.base64 :as b64]
    [clojure.java.io :as io]
-   [clojure.pprint :refer [print-table]]
+   [clojure.pprint :refer [pprint print-table]]
    [clojure.reflect :refer [reflect]]
    [clojure.set :as set]
-   [clojure.string :as str]
+   [clojure.string :as string]
    [clojure.template :as template]
    [clojure.test :as test]
    [clojure.walk :as w]

      (filter (fn [x]
                (contains? (:flags x) :public))
              (:members (reflect obj))))))

(defn safe-lowercase
  "Returns the given string in lower case safely."
  [v]
  (when v (string/lower-case v)))

(defn safe-uppercase
  "Returns the given string in upper case safely."
  [v]
  (when v (string/upper-case v)))

(defn match-enum-case
  "Given a string and a collection of valid enum values, return the proper-cased
