The type revealed when type checking the above fragment changed as a side effect of #16184, and this looks like a regression: ```py from typing import TypeVar T = TypeVar("T", bound="Base") class Base: def __abs__(self: T) -> T: return type(self)() class C(Base): pass def f(values: list[T]) -> T: return values[0] def g() -> None: x = abs(f([C()])) reveal_type(x) # "Base", but expected "C" <<------ ``` cc @ilevkivskyi