public class Foo<T> { protected class Bar<V> { } } public interface IBaz { } public class FooImpl : Foo<IBaz> { Bar<int> f; private class BarImpl : Bar<IBaz> { } public static int Main () { new FooImpl (); return 0; } }