code: def _parse_item(self):  # type: () -> Optional[Tuple[Optional[Key], Item]]
          
          self.mark()
          with self._state as state:
              while True:
                  c = self._current
                  if c == "\n":
                      # Found a newline; Return all whitespace found up to this point.
                      self.inc()
  
                      return None, Whitespace(self.extract())
                  elif c in " \t\r":
                      # Skip whitespace.
                      if not self.inc():
                          return None, Whitespace(self.extract())
                  elif c == "#":
                      # Found a comment, parse it
                      indent = self.extract()
                      cws, comment, trail = self._parse_comment_trail()
  
                      return None, Comment(Trivia(indent, cws, comment, trail))
                  elif c == "[":
                      # Found a table, delegate to the calling function.
                      return
                  else:
                      # Begining of a KV pair.
                      # Return to beginning of whitespace so it gets included
                      # as indentation for the KV about to be parsed.
                      state.restore = True
                      break
  
          return self._parse_key_value(True)
docs: Attempts to parse the next item and returns it, along with its key
          if the item is value-like.