docs: def apply_complement(self, a, return_Ya=False):
          """Apply the complementary projection to an array.
  
          :param z: array with ``shape==(N,m)``.
  
          :return: :math:`P_{\\mathcal{Y}^\\perp,\\mathcal{X}}z =
              z - P_{\\mathcal{X},\\mathcal{Y}^\\perp} z`.
          """
          # is projection the zero operator? --> complement is identity
          if self.V.shape[1] == 0:
              if return_Ya:
                  return a.copy(), numpy.zeros((0, a.shape[1]))
              return a.copy()
          if return_Ya:
              x, Ya = self._apply(a, return_Ya=True)
          else:
              x = self._apply(a)
          z = a - x
          for i in range(self.iterations-1):
              w = self._apply(z)
              z = z - w
          if return_Ya:
              return z, Ya
          return z