Shouldn't `SemanticComparer<T>` implement `IEqualityComparer`?