def METHOD_NAME(self, char_index: int) -> Sloc:
    """
    Return the Sloc (1-based line and column number) of the character at
    the given 1-based character index.
    """
    # Get the line number in which this character lies
    line = int(bisect_right(self._line_starts, char_index))
    # Get the character index of the first character of the line
    line_offset = int(self._line_starts[line - 1])
    # Get the last character index of the buffer
    source_last = int(self.value['source_last'])
    # Compute the column number as being the given character index minus
    # the character index of the first character of the line. Make sure
    # the character index is not higher than the index of the last
    # character of the buffer. Note that we don't support tab expansion
    # here.
    column = min(char_index, source_last) - line_offset + 1
    # Return the Sloc with 1-based line and columber numbers
    return Sloc(line, column)