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?