   (str (enum-string k) (when-not s? "$FAILURE$")))
 
 (defn- generate-rejected-enum [rejected-keys]
+  (enum-assertions rejected-keys)
   (let [key->enum-string (into {} (map (fn [k]
                                          [k (enum-string k)])
                                        rejected-keys))

     :key->enum-string key->enum-string}))

(defn- generate-result-enum [result->success?]
  (let [key->enum-string (into {} (map (fn [[k s?]]
                                         [k (result-enum-string k s?)])
                                       result->success?))

  (:import (beehive.enums EnumBuilder)))

(set! *warn-on-reflection* true)

(defn result-assertions [ks]
  (doseq [k ks]
    (assert (not (.contains (name k) "$FAILURE$"))
            "Result keyword cannot contain the string \"$FAILURE$\".")))

(defn enum-assertions [ks]
  (doseq [k ks]
    (assert (not (.contains (name k) "$DASH$"))
            "Enum keyword cannot contain the string \"$DASH$\".")))

(defn- enum-string [k]
  (.replace (name k) "-" "$DASH$"))
