def METHOD_NAME(
    self, value: _L, start: int = 0, stop: Optional[int] = None
) -> int:
    """Return first index of value.
    Parameters
    ----------
    value : Any
        A value to lookup.  If `type(value)` is in the lookups functions
        provided for this class, then values in the list will be searched
        using the corresponding lookup converter function.
    start : int, optional
        The starting index to search, by default 0
    stop : int, optional
        The ending index to search, by default None
    Returns
    -------
    int
        The index of the value
    Raises
    ------
    ValueError
        If the value is not present
    """
    if start is not None and start < 0:
        start = max(len(self) + start, 0)
    if stop is not None and stop < 0:
        stop += len(self)
    convert = self._lookup.get(type(value), _noop)
    for i in self._iter_indices(start, stop):
        v = convert(self[i])
        if v is value or v == value:
            return i
    raise ValueError(
        trans._(
            "{value!r} is not in list",
            deferred=True,
            value=value,
        )
    )