@classmethod
def walk_fast(cls, level):
    """Walk along a Hilbert curve at the given level.

        This function does not exist in the SWIG bindings of the original C++
        library. It provides a more Pythonic way to iterate over cells.

        Use with caution: this repeatedly mutates a single instance with a
        changing ``id``. If you save the object, it will change out from
        underneath you.

        :returns:
            Iterator over ids in the same instance of :class:`CellId`.
        """
    instance = cls.begin(level)
    cellid_int = instance.id()
    endid_int = cls.end(level).id()
    increment = instance.lsb() << 1
    while cellid_int != endid_int:
        instance.__id = cellid_int
        yield instance
        cellid_int += increment
