Again, this isn't ported to python, so `z < x` is some python definition of `<`.  

We start with the check of the pointers again, since if they are equal then `a < b` is false, since `a == b`.  It doesn't check all the elements, just whether the memory location is the same.

As to what `a < b` _means_ when multiple values differ, it doesn't really matter.  We just need them to be well-ordered.  The actual order doesn't matter.  We need the ordering so that GSParams can be used as parts of the keys to a `std::map` which implements an associative array.  As long as the keys can be ordered, then the items can be sorted and then searched quickly, so it allows for efficient look ups.