Why does `Likeness<T>` require `SemanticComparer<T>`? AFAICT, the only thing it needs is an `IEqualityComparer<T>`...