def METHOD_NAME(cls, op):
    tensor = op.outputs[0]
    chunk_length = tensor.extra_params.raw_chunk_size or options.chunk_size
    chunk_length = decide_chunk_sizes(
        tensor.shape, chunk_length, tensor.dtype.itemsize
    )
    start, stop, step = op.start, op.stop, op.step  # noqa: F841
    out_chunks = []
    n_elem = 0
    for i, cs in enumerate(chunk_length[0]):
        chunk_start = start + n_elem * step
        chunk_stop = start + (n_elem + cs) * step
        chunk_size = max(int(np.ceil((chunk_stop - chunk_start) / step)), 0)
        if chunk_size > cs:
            chunk_stop -= step
        chunk_shape = (cs,)
        chunk_idx = (i,)
        chunk_op = op.to_chunk_op(chunk_start, chunk_stop, step)
        out_chunk = chunk_op.new_chunk(None, shape=chunk_shape, index=chunk_idx)
        n_elem += cs
        out_chunks.append(out_chunk)
    new_op = op.copy()
    return new_op.new_tensors(
        op.inputs,
        tensor.shape,
        order=tensor.order,
        chunks=out_chunks,
        nsplits=chunk_length,
    )