code: def draw(self):
      program = self._program
      collection = self._collection
      mode = collection._mode
  
      if collection._need_update:
          collection._update()
          # self._program.bind(self._vertices_buffer)
          if collection._uniforms_list is not None:
              program["uniforms"] = collection._uniforms_texture
              program["uniforms_shape"] = collection._ushape
  
      if collection._indices_list is not None:
          program.draw(mode, collection._indices_buffer)
      else:
          program.draw(mode)
  
file_path: vispy/vispy/visuals/collections/collection.py
imports: import numpy
  from ...None import gloo
  from .util import fetchcode
  from .base_collection import BaseCollection
  from ..shaders import ModularProgram
  from ...util.event import EventEmitter
label_desc: Use image node_id 4 for calling the CollectionView obj's underlying member method code with example usage: obj.draw() without return types