Perfect, and there are some other cases better to have. Give you few examples, but they might be invalid, I just try to throw you some ideas-

```
@interface C : A
@end

@interface D : C
@end

@implementation D
- (void)foo {
}
- (void)bar {
    [self foo];
}
@end
```
```
@interface C : B
@end

@implementation C
- (void)bar {
    [self.a foo]; // or [super.a foo]
}
@end
```
```
@interface C : A
@end

@interface D : B
@end

@implementation D
- (void)bar {
    [self.a foo]; // or [super.a foo]
}
@end
```