def METHOD_NAME(cls, op: "GroupByIndex"):
    in_groupby = op.inputs[0]
    out_groupby = op.outputs[0]
    chunks = []
    for c in in_groupby.chunks:
        if op.output_types[0] == OutputType.series_groupby:
            params = dict(
                shape=(c.shape[0],),
                name=op.selection,
                index=(c.index[0],),
                dtype=c.dtypes[op.selection],
                index_value=c.index_value,
                key_dtypes=c.key_dtypes,
            )
        else:
            params = c.params.copy()
            params["dtypes"] = out_groupby.dtypes
            params["selection"] = op.selection
            params["shape"] = (c.shape[0], len(op.selection))
            params["columns_value"] = out_groupby.columns_value
        new_op = op.copy().reset_key()
        chunks.append(new_op.new_chunk([c], **params))
    new_op = op.copy().reset_key()
    params = out_groupby.params.copy()
    new_nsplits = (
        (in_groupby.nsplits[0], (len(op.selection),))
        if out_groupby.ndim == 2
        else (in_groupby.nsplits[0],)
    )
    params.update(dict(chunks=chunks, nsplits=new_nsplits))
    return new_op.new_tileables([in_groupby], **params)