code: def tile(cls, op):
      from ..datasource.from_tensor import (
          dataframe_from_tensor,
          series_from_tensor,
      )
  
      lhs, rhs = op.lhs, op.rhs
      lhs, rhs = cls._align(lhs, rhs)
      out = op.outputs[0]
  
      if any(np.isnan(ns) for ns in lhs.nsplits[-1]):
          yield
      if any(np.isnan(ns) for ns in rhs.nsplits[0]):
          yield
  
      nsplit = decide_unify_split(lhs.nsplits[-1], rhs.nsplits[0])
      lhs_axis = validate_axis(lhs.ndim, -1)
      lhs = yield from recursive_tile(lhs.rechunk({lhs_axis: nsplit}))
      rhs = yield from recursive_tile(rhs.rechunk({0: nsplit}))
  
      # delegate computation to tensor
      lhs_tensor = (
          lhs if isinstance(lhs, TENSOR_TYPE) else lhs.to_tensor()
      )
      rhs_tensor = (
          rhs if isinstance(rhs, TENSOR_TYPE) else rhs.to_tensor()
      )
      ret = lhs_tensor.dot(rhs_tensor)
  
      if isinstance(out, TENSOR_TYPE):
          pass
      elif ret.ndim == 1:
          index = None
          if isinstance(lhs, DATAFRAME_TYPE):
              index = lhs.index
          elif isinstance(rhs, DATAFRAME_TYPE):
              index = rhs.dtypes.index
          ret = series_from_tensor(ret, index=index)
      elif ret.ndim == 2:
          index = lhs.index
          columns = None
          if isinstance(rhs, DATAFRAME_TYPE):
              columns = rhs.dtypes.index
          ret = dataframe_from_tensor(ret, index=index, columns=columns)
  
      tiled = yield from recursive_tile(ret)
      return [tiled]
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import KeyField, AnyField
  from ...tensor import tensor
  from ...tensor.core import TENSOR_TYPE
  from ...tensor.utils import decide_unify_split, validate_axis
  from ..core import DATAFRAME_TYPE, SERIES_TYPE, IndexValue
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import parse_index
label_desc: Use image node_id 5 for calling the DataFrameDot obj's underlying member method code with example usage: obj.tile(cls, op) and returns: list