code: def test_listcol_setitem_retain_dtype():
      df = cudf.DataFrame(
          {
              "a": cudf.Series([["a", "b"], []]),
              "b": [1, 2],
              "c": [123, 321],
          }
      )
      df1 = df.head(0)
      # Performing a setitem on `b` triggers a `column.column_empty_like` call
      # which tries to create an empty ListColumn.
      df1["b"] = df1["c"]
      # Performing a copy to trigger a copy dtype which is obtained by accessing
      # `ListColumn.children` that would have been corrupted in previous call
      # prior to this fix: https://github.com/rapidsai/cudf/pull/10151/
      df2 = df1.copy()
      assert df2["a"].dtype == df["a"].dtype
  
imports: import functools
  import operator
  import numpy
  import pandas
  import pyarrow
  import pytest
  import cudf
  from cudf import NA
  from cudf._lib.copying import get_element
  from cudf.api.types import is_scalar
  from cudf.testing._utils import DATETIME_TYPES, NUMERIC_TYPES, TIMEDELTA_TYPES, assert_eq
label_desc: Use image node_id 41 for calling a global function with example usage: test_listcol_setitem_retain_dtype() without return types