public static void IsCanonical <T>(this IEqualityComparerAssertExtensions assert, IEqualityComparer <T> comparer, T other)
        {
            Assert.IsTrue(comparer.Equals(default(T), default(T)), CreateMessage("null == null"));
            Assert.IsFalse(comparer.Equals(default(T), other), CreateMessage("null != other"));
            Assert.IsFalse(comparer.Equals(other, default(T)), CreateMessage("other != null"));
            Assert.IsTrue(comparer.Equals(other, other), CreateMessage("other == other"));

            string CreateMessage(string requirement)
            {
                return($"{typeof(IEqualityComparer<T>).ToPrettyString()} violates the {requirement.QuoteWith("'")} requirement.");
            }
        }
 public static void IsCanonical <T>(this IEqualityComparerAssertExtensions assert, IEqualityComparer <T> comparer, T value)
 {
     Assert.IsTrue(comparer.Equals(default, default), CreateMessage("null == null"));