**Edit:** While working on #1129 I stumbled upon the following pattern that cannot be inferred yet because we don't yet attempt to recognize return types: ```ts function foo(a: Set<i32> = new Set()) { ... } function makeSet<T>(): Set<T> { ... } foo(makeSet()); // expected 1 type argument, but got 0 ``` Pinning here so we don't forget.