code: def test_removing_next_tick_twice(self) -> None:
      with LoopAndGroup(quit_after=15) as ctx:
          func = _make_invocation_counter(ctx.io_loop)
          cb_id = make_id()
          ctx.group.add_next_tick_callback(
              callback=func, callback_id=cb_id
          )
          ctx.group.remove_next_tick_callback(cb_id)
          with pytest.raises(ValueError) as exc:
              ctx.group.remove_next_tick_callback(cb_id)
      assert 0 == func.count()
      assert "twice" in repr(exc.value)
  
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 12 for calling the TestCallbackGroup obj's underlying member method code with example usage: obj.test_removing_next_tick_twice() without return types