Another example would be synchronized classes: synchronized class X { public alias f g; private void f(){} } Now g() would be a public method that is not protected by the class' mutex. This case would have to be explicitly forbidden.