Currently writing matchers is rather tedious and we need a custom matcher per class we are testing.
Follow the shouldly approach and match on properties.
Allow extensions of matchers and match chaining (x.Should().BeFoo(...).Bar(..))
Ensure we are compatible with NSubstitute and Moq argument matching
Deprecate existing matchers but remain compatible