The trick is in `BaseColumn.__array_finalize__`, where I added a check whether the next item in the MRO has an `__array_finalize__` as well, and, if so, calls it. So, now when `__array_finalize__` is called on a `MaskedColumn` object, it finds the first instance in `BaseColumn`, and this then seeks further. The neat part is that this makes the process general (it is used also in the `ndarray` subclassing).