Sorry if I didn't make this clear : I believe this code is definitely **bugged** + needs to be fixed somehow.

You could get away with this with the previous strict equality, that compares the masks first, but once you are no longer always doing that then this calculation does not deliver what appears be intended, so that is a bug in my book.

We still have the previously noted problem : it says that
 * ```ma.array([1,2], mask=False)``` and
 * ```ma.array([1,2], mask=[False, False])```

are **not** equivalent for strict=False, for reasons that don't seem quite as intended
 -- though you can still decide that is how it should work, and make it clear in the docstring.

However, as it stands this code still has other problems.
For instance ...
```
>>> a = np.ma.array([1, 2, 3, 4], mask=[False, True, True, False])
>>> b = np.ma.array([1, 4, 7, 11, 12], mask=[False, False, True, True, True])
>>> np.testing.assert_array_equal(a[~a.mask], b[~b.mask])
>>> np.array_equal(a[~a.mask], b[~b.mask])
True
>>> 
```
(it does this because is compares a[~a.mask] with b{~b.mask), whereas it would make more sense to *combine* the masks + apply to both)
I really don't think that is helpful behaviour, so you need to think more carefully what non-strict comparison "ought to mean".

And then we need tests for all these cases !