I don't think `widen` will cut it, we might have `def x(a: A)(b: a.B.C): (a.type, b.type)`.

But what I think we're after is `typer.packSymbols(params, resultTpe)`

```
scala> class C { def x(a: String): T forSome {type T <: S; type S <: a.type} = ??? }
warning: there were 3 feature warnings; re-run with -feature for details
defined class C

scala> val x = intp("C").info.decls.toList(1)
x: $r.intp.global.Symbol = method x

scala> x.info
res6: $r.intp.global.Type = (a: String)T forSome { type T <: a.type; type S <: a.type }

scala> x.info.resultType
res7: $r.intp.global.Type = T forSome { type T <: a.type; type S <: a.type }

scala> typer.packSymbols(x.paramss.flatten, x.info.resultType)
res8: $r.intp.global.analyzer.global.Type = T forSome { val a: String; type T <: a.type; type S <: a.type }
```