> @myronmarston in order to make description_when_negated I had to edit BaseMatcher:

I'm still not sure I follow: you pasted a code snippet showing how you've implemented `failure_message_when_negated`, not what you had to do to implement `description_when_negated`.  `failure_message_when_negated` is just fine as it is and doesn't need to use `description_when_negated`.  In fact, I don't think `BaseMatcher` needs to (or should) implement `description_when_negated` at all -- the point of `description_when_negated` is to allow matchers to define custom phrasing for the string that `(~matcher).description` returns, so the cases we need it are cases that can't be defined generically on a base class like `BaseMatcher`.