Avatar
public class Gen<T, U> {} public typealias IntGen<U> = Gen<Int, U> public typealias IntIntGen = Gen<Int, Int> public protocol Foo { func foo<U>() -> IntGen<U> func bar() -> IntIntGen } class C : Foo { }