     (when-not (empty? diffs)
       (MapDiffs. (set diffs)))))
 
-
 ;; Vector
 
 (defn report-vector

  (clojure.string/join
   " "
   (-> []
       (cond-> (seq only-in-a) (conj (str "expected to contain " (pluralize "key" only-in-a) ": "
                                          (pr-str (flatten-when-single only-in-a)) ", but not found.")))
       (cond-> (seq only-in-b) (conj (str "contained " (pluralize "key" only-in-b) ": "
                                          (pr-str (flatten-when-single only-in-b)) ", but not expected"))))))

(defrecord MapEntryDiff [only-in-a only-in-b]
  Report

  (clojure.string/join
   " "
   (-> []
       (cond-> (seq only-in-a)
               (conj (str "expected to contain: "
                          (pr-str (flatten-when-single only-in-a))
                          ", but not found.")))
       (cond-> (seq only-in-b)
               (conj (str "contained: "
                          (pr-str (flatten-when-single only-in-b))
                          ", but not expected"))))))

(defrecord SetDiff [only-in-a only-in-b]
  Report
