Following Objective C program: @class C; @protocol P @end @interface I - (C <P> *) m; @end @implementation I - (C <P> *) m; { return 0; } @end gets rewritten as: static C<P> * _I_I_m(I * self, SEL _cmd) { return 0; } which seems clearly wrong. Protocols are not templates. -- Seo Sanghyeon