code: def test_recolorize_main(self, mock_notify):
      text = self.text
      color = self.color
      eq = self.assertEqual
  
      text.insert("insert", source)
      expected = (
          ("1.0", ("KEYWORD",)),
          ("1.2", ()),
          ("1.3", ("KEYWORD",)),
          ("1.7", ()),
          ("1.9", ("BUILTIN",)),
          ("1.14", ("STRING",)),
          ("1.19", ("COMMENT",)),
          ("2.1", ("KEYWORD",)),
          ("2.18", ()),
          ("2.25", ("COMMENT",)),
          ("3.6", ("BUILTIN",)),
          ("3.12", ("KEYWORD",)),
          ("3.21", ("COMMENT",)),
          ("4.0", ("KEYWORD",)),
          ("4.3", ()),
          ("4.6", ()),
          ("5.2", ("STRING",)),
          ("5.8", ("KEYWORD",)),
          ("5.10", ("STRING",)),
          ("6.0", ("KEYWORD",)),
          ("6.10", ("DEFINITION",)),
          ("6.11", ()),
          ("8.0", ("STRING",)),
          ("8.4", ()),
          ("8.5", ("STRING",)),
          ("8.12", ()),
          ("8.14", ("STRING",)),
          ("19.0", ("KEYWORD",)),
          ("20.4", ("KEYWORD",)),
          ("20.16", ("KEYWORD",)),  # ('20.19', ('KEYWORD',)),
          # ('22.4', ('KEYWORD',)), ('22.10', ('KEYWORD',)), ('22.14', ('KEYWORD',)), ('22.19', ('STRING',)),
          # ('23.12', ('KEYWORD',)),
          ("24.8", ("KEYWORD",)),
          ("25.4", ("KEYWORD",)),
          ("25.9", ("KEYWORD",)),
          ("25.11", ("KEYWORD",)),
          ("25.15", ("STRING",)),
          ("25.19", ("KEYWORD",)),
          ("25.22", ()),
          ("25.24", ("KEYWORD",)),
          ("25.29", ("BUILTIN",)),
          ("25.37", ("KEYWORD",)),
          ("26.4", ("KEYWORD",)),
          (
              "26.9",
              ("KEYWORD",),
          ),  # ('26.11', ('KEYWORD',)), ('26.14', (),),
          ("27.25", ("STRING",)),
          ("27.38", ("STRING",)),
          ("29.0", ("STRING",)),
          ("30.1", ("STRING",)),
          # SYNC at the end of every line.
          ("1.55", ("SYNC",)),
          ("2.50", ("SYNC",)),
          ("3.34", ("SYNC",)),
      )
  
      # Nothing marked to do therefore no tags in text.
      text.tag_remove("TODO", "1.0", "end")
      color.recolorize_main()
      for tag in text.tag_names():
          with self.subTest(tag=tag):
              eq(text.tag_ranges(tag), ())
  
      # Source marked for processing.
      text.tag_add("TODO", "1.0", "end")
      # Check some indexes.
      color.recolorize_main()
      for index, expected_tags in expected:
          with self.subTest(index=index):
              eq(text.tag_names(index), expected_tags)
  
      # Check for some tags for ranges.
      eq(text.tag_nextrange("TODO", "1.0"), ())
      eq(text.tag_nextrange("KEYWORD", "1.0"), ("1.0", "1.2"))
      eq(text.tag_nextrange("COMMENT", "2.0"), ("2.22", "2.43"))
      eq(text.tag_nextrange("SYNC", "2.0"), ("2.43", "3.0"))
      eq(text.tag_nextrange("STRING", "2.0"), ("4.17", "4.53"))
      eq(text.tag_nextrange("STRING", "8.0"), ("8.0", "8.3"))
      eq(text.tag_nextrange("STRING", "8.3"), ("8.5", "8.12"))
      eq(text.tag_nextrange("STRING", "8.12"), ("8.14", "8.17"))
      eq(text.tag_nextrange("STRING", "8.17"), ("8.19", "8.26"))
      eq(text.tag_nextrange("SYNC", "8.0"), ("8.26", "9.0"))
      eq(text.tag_nextrange("SYNC", "30.0"), ("30.10", "32.0"))
  
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 13 for calling the ColorDelegatorTest obj's underlying member method code with example usage: obj.test_recolorize_main(mock_notify) without return types