That catches the recursion on the inside rather than the outside, and we've already modified the hash for the intervening layers. We get `a.hash == [[a]].hash` because of the XOR, but `a.hash != [a].hash`.