code: def tile(cls, op):
      in_tensor = op.input
      splits = op.outputs
      axis = op.axis
  
      acc_shapes = np.cumsum([s.shape[axis] for s in splits])
      out_kws = [dict() for _ in splits]
      for i, split in enumerate(splits):
          slc = slice(0 if i == 0 else acc_shapes[i - 1], acc_shapes[i])
          new_s = yield from recursive_tile(
              in_tensor[(slice(None),) * axis + (slc,)]
          )
          out_kws[i]["chunks"] = new_s.chunks
          out_kws[i]["nsplits"] = new_s.nsplits
          out_kws[i]["shape"] = split.shape
          out_kws[i]["order"] = op.outputs[i].order
  
      new_op = op.copy()
      return new_op.new_tensors(
          op.inputs, kws=out_kws, output_limit=len(out_kws)
      )
  
imports: import numpy
  from ...None import opcodes
  from ...core import ExecutableTuple, recursive_tile
  from ...lib.sparse.core import get_array_module
  from ...serialization.serializables import KeyField, AnyField, Int32Field
  from ..core import Tensor
  from ..datasource import tensor
  from ..utils import calc_sliced_size
  from ..operands import TensorHasInput, TensorOperandMixin
label_desc: Use image node_id 7 for calling the TensorSplit obj's underlying member method code with example usage: obj.tile(cls, op) and returns: new_op