 ;;
 
 
-(defn match? [actual expected looseness]
+(defn- match? [actual expected looseness]
   (let [comparison (compare-results  actual expected looseness)]
     (or (total-match? comparison)
         (apply noted-falsehood


(defn- midje-classification [thing] (if (map? thing) ::map ::not-map))

(defmulti collection-string
  "Given a list of stringified elements, convert them into appropriate
   collection text."
  (fn [midje-classification elements] midje-classification))


;;-

(defmulti #^{:private true} compare-results
  (fn [actual expected looseness]
    (if (= ::map (midje-classification actual))
      (midje-classification actual)
      [::not-map (or (some #{:in-any-order} looseness) :strict-order)])))

;; There are some incommensurable utility behaviors
(defn- compare-one-map-permutation [actual expected keys]
  ;;  (prn "map-comparison" actual expected)
  (reduce (fn [so-far key]
            (if (and (find actual key)
