"Is there a sensible reason why Contains uses _value.Compare(value) and not just _value=value?"
Because two different objects might be identical, without being the same physical object?Type Vector Field x:Int , y:Int EndType Local vect1:Vector = New Vector Local vect2:Vector = New Vector vect1.x = 200 vect2.x = 200 vect1.y = 30 vect2.y = 30 Print vect1 = vect2