// Matching properties
@interface I1 {
}
- (int)getProp2;
- (void)setProp2:(int)value;
@end

// Mismatched property
@interface I2
@property (readonly) float Prop1;
@end

// Properties with implementations
@interface I3 {
int ivar1;
int ivar2;
int ivar3;
int Prop4;
}
@property int Prop1;
@property int Prop2;
@property int Prop3;
@property int Prop4;
@end

@implementation I3
@synthesize Prop1 = ivar1;
@synthesize Prop2 = ivar3;
@dynamic Prop3;
@synthesize Prop4;
@end