code: def tile(cls, op):
      tensor = op.outputs[0]
      in_tensor = op.input
      bins = op.bins
      if len(op.inputs) == 2:
          # bins is TensorData
          if has_unknown_shape(bins):
              yield
          bins = (
              yield from recursive_tile(bins.rechunk(tensor.shape))
          ).chunks[0]
  
      out_chunks = []
      for c in in_tensor.chunks:
          input_chunks = [c]
          if len(op.inputs) == 2:
              input_chunks.append(bins)
          out_chunk = (
              op.copy()
              .reset_key()
              .new_chunk(
                  input_chunks,
                  shape=c.shape,
                  index=c.index,
                  order=tensor.order,
              )
          )
          out_chunks.append(out_chunk)
  
      new_op = op.copy()
      return new_op.new_tensors(
          op.inputs,
          tensor.shape,
          order=tensor.order,
          chunks=out_chunks,
          nsplits=in_tensor.nsplits,
      )
  
imports: import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import KeyField, AnyField, BoolField
  from ...lib.sparse.core import get_array_module
  from ...utils import has_unknown_shape
  from ..array_utils import as_same_device, device
  from ..core import Tensor, TensorOrder
  from ..datasource import tensor
  from ..operands import TensorHasInput, TensorOperandMixin
label_desc: Use image node_id 6 for calling the TensorDigitize obj's underlying member method code with example usage: obj.tile(cls, op) and returns: new_op