class A { protected int foo; } class B : A { protected class N { public void Test (C b) { var v = b.foo; } } } class C : B { public static void Main () { new C.N ().Test (new C ()); } }