class M { sealed class Nested : C { protected override void Extra () { } } public static void Main () { new Nested (); } } abstract class A { protected abstract void AMethod (); } abstract class B : A { protected abstract void BMethod (); } abstract class C : B { protected override void AMethod () { } protected override void BMethod () { } protected abstract void Extra (); }