code: def tile(cls, op: "DataFrameReplace"):
      in_obj = op.inputs[0]
      out_obj = op.outputs[0]
  
      chunk_inputs_ex = []
      tileable_inputs_ex = []
      to_replace = op.to_replace
      if isinstance(to_replace, SERIES_TYPE):
          to_replace = yield from recursive_tile(
              to_replace.rechunk((to_replace.shape[0],))
          )
          chunk_inputs_ex.append(to_replace.chunks[0])
          tileable_inputs_ex.append(to_replace)
      value = op.value
      if isinstance(value, SERIES_TYPE):
          value = yield from recursive_tile(
              value.rechunk((value.shape[0],))
          )
          chunk_inputs_ex.append(value.chunks[0])
          tileable_inputs_ex.append(value)
  
      # fill methods only available when `to_replace` is a scalar, list or tuple
      # and `value` is no_default.
      with_fill = (
          op.value is no_default
          and not isinstance(op.to_replace, dict)
          and op.method is not None
      )
  
      chunks = []
      if not with_fill:
          for in_chunk in in_obj.chunks:
              inputs = [in_chunk] + chunk_inputs_ex
              chunks.append(
                  cls._build_result_chunk(
                      op,
                      inputs,
                      with_fill,
                      OperandStage.map if with_fill else None,
                  )
              )
      else:
          map_array = np.empty(out_obj.shape, dtype=object)
          for in_chunk in in_obj.chunks:
              inputs = [in_chunk] + chunk_inputs_ex
              map_array[in_chunk.index] = cls._build_result_chunk(
                  op,
                  inputs,
                  with_fill,
                  OperandStage.map if with_fill else None,
              )
  
          for in_chunk in in_obj.chunks:
              if op.method in (no_default, "pad", "ffill"):
                  slc = slice(0, in_chunk.index[0])
              else:
                  slc = slice(
                      in_chunk.index[0] + 1, in_obj.chunk_shape[0]
                  )
  
              if in_chunk.ndim == 2:
                  append_chunks = list(
                      map_array[slc, in_chunk.index[1]]
                  )
              else:
                  append_chunks = list(map_array[slc])
  
              inputs = [in_chunk] + chunk_inputs_ex + append_chunks
              chunks.append(
                  cls._build_result_chunk(
                      op, inputs, False, OperandStage.combine
                  )
              )
  
      inputs = [in_obj] + tileable_inputs_ex
      new_op = op.copy().reset_key()
      return new_op.new_tileables(
          inputs,
          chunks=chunks,
          nsplits=in_obj.nsplits,
          **out_obj.params,
      )
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core import recursive_tile
  from ...core.operand import OperandStage
  from ...serialization.serializables import FieldTypes, AnyField, Int32Field, ListField
  from ...utils import no_default
  from ..operands import DataFrameOperand, DataFrameOperandMixin, SERIES_TYPE, SERIES_CHUNK_TYPE
  from ..utils import build_df, build_series, parse_index
label_desc: Use image node_id 11 for calling the DataFrameReplace obj's underlying member method code with example usage: obj.tile(cls, op) and returns: new_op