@interface Foo(RightSub) <P2> @property id right_sub_prop; @end @interface Foo() { @public int right_sub_ivar; } @end @protocol P4 - (void)p4_method; @property (retain) id p4_prop; @end @interface Foo(LeftP4) <P4> @end // A hidden extension @interface Foo () @property (assign) int hiddenPropertyFromExtension; @end