@interface I1 
@end

// Matching category
@interface I1 (Cat1)
- (int)method0;
@end

// Matching class extension
@interface I1 ()
- (int)method1;
@end

// Mismatched category
@interface I1 (Cat2)
- (int)method2;
@end

@interface I2
@end

// Mismatched class extension
@interface I2 ()
- (int)method3;
@end

// Category with implementation
@interface I2 (Cat3)
@end

@implementation I2 (Cat3)
@end

// Category with implementation
@interface I2 (Cat4)
@end

@implementation I2 (Cat4)
@end

// Category with mismatched implementation
@interface I2 (Cat6)
@end

@implementation I2 (Cat6)
- (float)blah { return 0; }
@end