def METHOD_NAME(cls, op):
    in_groupby = op.inputs[0]
    out_df = op.outputs[0]
    chunks = []
    for c in in_groupby.chunks:
        new_op = op.copy().reset_key()
        new_index = parse_index(pd.RangeIndex(-1), c.key)
        if op.output_types[0] == OutputType.dataframe:
            chunks.append(
                new_op.new_chunk(
                    [c],
                    index=c.index,
                    shape=(np.nan, len(out_df.dtypes)),
                    dtypes=out_df.dtypes,
                    columns_value=out_df.columns_value,
                    index_value=new_index,
                )
            )
        else:
            chunks.append(
                new_op.new_chunk(
                    [c],
                    index=(c.index[0],),
                    shape=(np.nan,),
                    dtype=out_df.dtype,
                    index_value=new_index,
                    name=out_df.name,
                )
            )
    new_op = op.copy().reset_key()
    kw = out_df.params.copy()
    kw["chunks"] = chunks
    if op.output_types[0] == OutputType.dataframe:
        kw["nsplits"] = ((np.nan,) * len(chunks), (len(out_df.dtypes),))
    else:
        kw["nsplits"] = ((np.nan,) * len(chunks),)
    return new_op.new_tileables([in_groupby], **kw)