protocol P { associatedtype T func test(x: T) -> T } class Example : P { func test(x: Example) -> Example { return x } }