What keeps us from comparing the values of generic types which are known to be icomparable? Doesn't it somehow defeat the entire purpose of generic constraints?