Well, it all depends on what we want equality to mean. At this point, equality on records is equality on their variants and equality on calls is equality on their record, sample and genotype.

Literally comparing the entire datastructures would break things like [`utils.walk_together`](https://github.com/jamescasbon/PyVCF/blob/master/vcf/utils.py#L6) since it assumes equality on records is equality on their variants.

I agree the current behaviour might also give unexpected results though, as you show.