Please consider this situation. An child instance receives a parent's object, which was previously pulled and voided later on the child. Now, when we have pulled parent's object again we want to link that object to child's voided version of it in order to avoid saving old version of the object. To do so, hash codes have to be identical for these object (parent's non-voided & child's voided). That is why voided and retired related fields are skipped.