docs: def _process_for_docstring(self, node, node_type):
          """Check for docstring quote consistency.
  
          Args:
              node: the AST node being visited.
              node_type: the type of node being operated on.
          """
          # if there is no docstring, don't need to do anything.
          if node.doc is not None:
  
              # the module is everything, so to find the docstring, we
              # iterate line by line from the start until the first element
              # to find the docstring, as it cannot appear after the first
              # element in the body.
              if node_type == 'module':
  
                  # if there are no nodes that make up the body, then all we
                  # have is the module docstring
                  if not node.body:
                      # in this case, we should only have the module docstring
                      # parsed in the node, so the only record in the
                      # self._tokenized_triple_quotes dict will correspond to
                      # the module comment. this can vary by index depending
                      # on the presence of a shebang, encoding, etc at the top
                      # of the file.
                      for key in list(self._tokenized_triple_quotes.keys()):
                          quote_record = self._tokenized_triple_quotes.get(key)
                          if quote_record:
                              self._check_docstring_quotes(quote_record)
                              del self._tokenized_triple_quotes[key]
  
                  else:
                      for i in range(0, node.body[0].lineno):
                          quote_record = self._tokenized_triple_quotes.get(i)
                          if quote_record:
                              self._check_docstring_quotes(quote_record)
                              del self._tokenized_triple_quotes[i]
                              break
  
              else:
                  # the node has a docstring so we check the tokenized triple
                  # quotes to find a matching docstring token that follows the
                  # function/class definition.
  
                  if not node.body:
                      # if there is no body to the class, the class def only
                      # contains the docstring, so the only quotes we are
                      # tracking should correspond to the class docstring.
                      lineno = self._find_docstring_line_for_no_body(node.fromlineno)
                      quote_record = self._tokenized_triple_quotes.get(lineno)
                      if quote_record:
                          self._check_docstring_quotes(quote_record)
                          del self._tokenized_triple_quotes[lineno]
  
                  else:
                      doc_row = self._find_docstring_line(node.fromlineno, node.tolineno)
                      quote_record = self._tokenized_triple_quotes.get(doc_row)
                      if quote_record:
                          self._check_docstring_quotes(quote_record)
                          del self._tokenized_triple_quotes[doc_row]