def METHOD_NAME(cls, op):
    in_df = op.inputs[0]
    out_df = op.outputs[0]
    out_chunks = []
    if in_df.chunk_shape[1] > 1:
        cls._tile_column_axis_n_chunk(op, in_df, out_df, out_chunks)
    else:
        cls._tile_column_axis_1_chunk(op, in_df, out_df, out_chunks)
    new_op = op.copy()
    columns_nsplits = list(in_df.nsplits[1])
    if op.drop:
        columns_nsplits = tuple(
            split - 1 if i == 0 else split
            for i, split in enumerate(columns_nsplits)
        )
    nsplits = (in_df.nsplits[0], columns_nsplits)
    return new_op.new_dataframes(
        op.inputs,
        out_df.shape,
        dtypes=out_df.dtypes,
        index_value=out_df.index_value,
        columns_value=out_df.columns_value,
        chunks=out_chunks,
        nsplits=nsplits,
    )