code: def test_add_custom_emitter(self):
      class Emitter(EventEmitter):
          def _prepare_event(self, *args, **kwargs):
              ev = super(Emitter, self)._prepare_event(*args, **kwargs)
              ev.test_key = 1
              return ev
  
      class Source:
          pass
  
      src = Source()
  
      grp = EmitterGroup(source=src, em1=Emitter(type="test_event1"))
      grp.em1.connect(self.record_event)
      self.result = None
      ev = grp.em1()
      self.assert_result(
          event=ev, test_key=1, type="test_event1", source=src
      )
  
      grp.add(em2=Emitter(type="test_event2"))
      grp.em2.connect(self.record_event)
      self.result = None
      ev = grp.em2()
      self.assert_result(
          event=ev, test_key=1, type="test_event2", source=src
      )
  
imports: import unittest
  import copy
  from vispy.util.event import Event, EventEmitter, EmitterGroup
  from vispy.util import use_log_level
  from vispy.testing import run_tests_if_main, assert_true, assert_raises
label_desc: Use image node_id 7 for calling the TestGroups obj's underlying member method code with example usage: obj.test_add_custom_emitter() and returns: ev