Listing 9

using namespace System;

public ref struct A
{
/*1a*/          void F0() { Console::WriteLine("A::F0"); }
/*1b*/  virtual void F1() { Console::WriteLine("A::F1"); }
/*1c*/  virtual void F2() { Console::WriteLine("A::F2"); }
//*1d*/ virtual void F3() { Console::WriteLine("A::F3"); }
};

public ref struct B : public A
{
/*2a*/  void F0() new              { Console::WriteLine("B::F0"); }
/*2b*/  virtual void F1() override { Console::WriteLine("B::F1"); }
/*2c*/  virtual void F2() new      { Console::WriteLine("B::F2"); }
private:
//*2d*/ void F3() new          { Console::WriteLine("B::F3"); }
};

public ref struct C : public B
{
/*3a*/  void F0() new              { Console::WriteLine("C::F0"); }
/*3b*/  virtual void F1x() override = B::F1 { Console::WriteLine("C::F1x"); }
/*3c*/  virtual void F2x() = B::F2 { Console::WriteLine("C::F2x"); }
//*3d*/ virtual void F3() { Console::WriteLine("C::F3"); }
};