On the other hand C# implements strict access control. I once needed to give access to an otherwise private member of inner class to outer class and had to declare it internal, which is a bit too broad access level, but there's no other way to solve this task in C# due to that strict access control.