You've defined a NotImplemented case for `array_structure.__eq__(other)` which allows Python to try `other.__eq__(array_structure)`. So it would seem to define the same semantics for `!=`? As it currently stands `array_structure != other` will call `array_structure.__ne__(other)` which will just return False, without giving `other` a chance to define the comparison.