type C _;
procedure P(x : a, y : b) returns ();
implementation P(x : a, y : b) returns () {}
implementation P(a : c, b : d) returns () {}
implementation P(a : c, b : d) returns () {}
implementation P(a : c, b : C d) returns () {}
implementation P(x : a, y : a) returns () {}