 ;;  if pass? if false
 ;;
 ;;  TODO: matchers list
-;;  - containsString
-;;  - startsWith
-;;  - endsWith
-;;  - equalIgnoringCase
-;;  - equalIgnoringWhiteSpace
-;;  - stringContainsInOrder
 (defn describe-list [call xs]
   (str "(" call " " (clojure.string/join " " xs) ")"))
 
 (defn standard-describe-mismatch [x]
   (pr-str x))
+
+(defn describe-class-mismatch [x]
+  (str (pr-str x)
+       (if (clojure.core/nil? x)
+         ""
+         (str " <" (class x) ">"))))
+
 
 (defn describe-mismatch-feature [x feature-name feature-mismatch]
   (str (standard-describe-mismatch x) " with " feature-name " " feature-mismatch))

    {:match #(.contains ^String % s)
     :description (str "a string including " (pr-str s))}))

(defn not
  "passes if the given matcher fails
  (matcha/run-match (matcha/not (matcha/= 1)) 1) ; => passes

   :describe-mismatch
   standard-describe-mismatch})

(defn instance?
  "passes if the value matches the given class
  (matcha/run-match (matcha/instance? clojure.lang.Keyword) :foo) ; => passes
