'Whether iterating on this iterator requires keeping track of
individual indices inside the shape.  If False, only a single index
over the equivalent flat shape is required, which can make the
iterator more efficient.'

@utils.cached_property
def need_shaped_indexing(self):

    for (kind, start_dim, end_dim, _) in self.indexers:
        if (kind in ('0d', 'scalar')):
            pass
        elif (kind == 'flat'):
            if ((start_dim, end_dim) != (0, self.ndim)):
                return True
        else:
            return True
    return False
