docs: def _process_string(self, char):
          """ Process a character as part of a string token.
              """
  
          if char in self.QUOTES:
              # end of quoted string:
              #   1) quote must match original quote
              #   2) not escaped quote (e.g. "hey there" vs "hey there\")
              #   3) actual escape char prior (e.g. "hey there\\")
  
              if (char == self._last_quote and
                      not self._escaped or self._double_escaped):
  
                  # store token
                  self._new_token()
                  self._state = self.ST_TOKEN
                  return  # skip adding token char
  
          elif char == self.ESCAPE:
              # escape character:
              #   double escaped if prior char was escape (e.g. "hey \\ there")
  
              if not self._double_escaped:
                  self._double_escaped = self._escaped
  
          else:
              self._double_escaped = False
  
          self._token_chars.append(char)