Compiler projects using llvm
@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