**Bug Report** **To Reproduce** ```py from typing import Any, Generic, TypeVar T = TypeVar("T") class Foo(Generic[T]): def __init__(self, value: T): self.value = value def identity(value: T) -> Foo[T]: if isinstance(value, str): return Foo(value) return Foo(value) ``` **Expected Behavior** mypy should be able to tell that in the type-guarded block, `T == str` and use that to qualify the types. **Actual Behavior** mypy reports an error `Argument 1 to "Foo" has incompatible type "str"; expected "T"` in the type-guarded block in `identity()`. **Your Environment** - Mypy version used: 0.910 - Mypy command-line flags: N/A - Mypy configuration options from `mypy.ini` (and other config files): N/A - Python version used: 3.9 - Operating system and version: Windows 10