code: def test_removecolors(self, mock_notify, mock_recolorize):
      text = self.text
      color = self.color
      text.insert("insert", source)
  
      color.recolorize_main()
      # recolorize_main doesn't add these tags.
      text.tag_add("ERROR", "1.0")
      text.tag_add("TODO", "1.0")
      text.tag_add("hit", "1.0")
      for tag in color.tagdefs:
          with self.subTest(tag=tag):
              self.assertNotEqual(text.tag_ranges(tag), ())
  
      color.removecolors()
      for tag in color.tagdefs:
          with self.subTest(tag=tag):
              self.assertEqual(text.tag_ranges(tag), ())
  
imports: from idlelib import colorizer
  from test.support import requires
  import unittest
  from unittest import mock
  from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop
  from functools import partial
  import textwrap
  from tkinter import Tk, Text
  from idlelib import config
  from idlelib.percolator import Percolator
label_desc: Use image node_id 20 for calling the ColorDelegatorTest obj's underlying member method code with example usage: obj.test_removecolors(mock_notify, mock_recolorize) without return types