code: def test_next_tick_runs(self) -> None:
      with LoopAndGroup() as ctx:
          func = _make_invocation_counter(ctx.io_loop)
          assert 0 == len(ctx.group._next_tick_callback_removers)
          ctx.group.add_next_tick_callback(
              callback=func, callback_id=make_id()
          )
          assert 1 == len(ctx.group._next_tick_callback_removers)
      assert 1 == func.count()
      # check for leaks
      assert 0 == len(ctx.group._next_tick_callback_removers)
  
imports: from __future__ import annotations
  import pytest
  from concurrent.futures import ThreadPoolExecutor
  from itertools import repeat
  from tornado.ioloop import IOLoop
  from bokeh.util.serialization import make_id
  from bokeh.util.tornado import _CallbackGroup
label_desc: Use image node_id 1 for calling the TestCallbackGroup obj's underlying member method code with example usage: obj.test_next_tick_runs() without return types