@emmatyping @whitequark @glyph @SnoopJ @ancoghlan @mcc
```
from typing import TypeVar, Callable, Optional
T = TypeVar("T")
U = TypeVar("U")
def g[T, U](fn: Callable[[T | U], U], x: T) -> U:
return fn(fn(x))
def f(_: Optional[int]) -> None:
pass
x = f(12) # Fails
f(f(12)) # Fails
g(f, 12) # Works
```