forget c# version 2 type safe (generic) comparer