public int Compare(object o1, object o2) { if (o1 == o2) { return(0); } else if (!(o1 is PointerValue) || !(o2 is PointerValue)) { return(1); } else { PointerValue ptr1 = o1 as PointerValue; PointerValue ptr2 = o2 as PointerValue; int res = (int)this.objHash[ptr1.GetHeapObject()] - (int)this.objHash[ptr2.GetHeapObject()]; if (res == 0) { res = ptr1.GetQuasiOffset() - ptr2.GetQuasiOffset(); } return(res); } }