class_docstr: Find tags and other markup and call handler functions.
  
  Usage:
      p = HTMLParser()
      p.feed(data)
      ...
      p.close()
  
  Start tags are handled by calling self.handle_starttag() or
  self.handle_startendtag(); end tags by self.handle_endtag().  The
  data between tags is passed from the parser to the derived class
  by calling self.handle_data() with the data as argument (the data
  may be split up in arbitrary chunks).  If convert_charrefs is
  True the character references are converted automatically to the
  corresponding Unicode character (and self.handle_data() is no
  longer split in chunks), otherwise they are passed by calling
  self.handle_entityref() or self.handle_charref() with the string
  containing respectively the named or numeric reference as the
  argument.
code: def check_for_whole_start_tag(self, i):
      rawdata = self.rawdata
      m = locatestarttagend_tolerant.match(rawdata, i)
      if m:
          j = m.end()
          next = rawdata[j : j + 1]
          if next == ">":
              return j + 1
          if next == "/":
              if rawdata.startswith("/>", j):
                  return j + 2
              if rawdata.startswith("/", j):
                  # buffer boundary
                  return -1
              # else bogus input
              if j > i:
                  return j
              else:
                  return i + 1
          if next == "":
              # end of input
              return -1
          if next in (
              "abcdefghijklmnopqrstuvwxyz=/"
              "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
          ):
              # end of input in or before attribute value, or we have the
              # '/' from a '/>' ending
              return -1
          if j > i:
              return j
          else:
              return i + 1
      raise AssertionError("we should not get here!")
  
imports: import re
  import _markupbase
  from html import unescape
label_desc: Use image node_id 13 for calling the HTMLParser obj's underlying member method code with example usage: obj.check_for_whole_start_tag(i) and returns: unknown, unknown, unknown, j, unknown, unknown, unknown, j, unknown