code: def estimate_size(cls, ctx, op):
      chunk = op.outputs[0]
      if not op.sparse or not getattr(op, "_density", None):
          super().estimate_size(ctx, op)
      else:
          # use density to estimate real memory usage
          nbytes = int(chunk.nbytes * getattr(chunk.op, "_density"))
          ctx[chunk.key] = (nbytes, nbytes)
  
file_path: mars/mars/tensor/random/randint.py
imports: import numpy
  from ...None import opcodes
  from ...serialization.serializables import Int64Field, Float64Field
  from ..array_utils import array_module
  from ..utils import gen_random_seeds
  from .core import TensorRandomOperandMixin, TensorSimpleRandomData
label_desc: Use image node_id 4 for calling the TensorRandint obj's underlying member method code with example usage: obj.estimate_size(cls, ctx, op) without return types