give:
```d
class A
{
void f() { }
}
```
this is ok:
```d
class B : A
{
protected override void f() { }
}
```
this is not:
```d
class B : A
{
private override void f() { }
}
```
Why is that? why must I leave it accessible somehow (even if it's
protected) to all derived class of my derived class?
