In isolation, I do agree with you that `def produces_identity() -> Callable[[T], T]:...` is the most intuitive way to spell a function that produces an identity function. However, I don't agree that it's intuitive to treat that Callable type there differently from `def takes_identity(f: Callable[[T], T]) -> None:..`, where I believe that pytype, mypy and pyre all agree that those `T`s are in the scope of the `def`. With all that being said, we're not arguing that anyone else should modify the behavior of their type checkers. Instead, we're just asking that in non-standardized areas such as these we have typeshed correspond to the lowest common denominator between the type checkers and spell things in a way that we all agree on. Best, Mark