void run()
  {
    if (director_classes.PrintDebug) Console.WriteLine("------------ Start ------------ ");

    Caller myCaller = new Caller();

    // test C++ base class
    using (Base myBase = new Base(100.0))
    {
      makeCalls(myCaller, myBase);
    }

    if (director_classes.PrintDebug) Console.WriteLine("--------------------------------");

    // test vanilla C++ wrapped derived class
    using (Base myBase = new Derived(200.0))
    {
      makeCalls(myCaller, myBase);
    }

    if (director_classes.PrintDebug) Console.WriteLine("--------------------------------");

    // test director / C# derived class
    using (Base myBase = new CSharpDerived(300.0))
    {
      makeCalls(myCaller, myBase);
    }

    if (director_classes.PrintDebug) Console.WriteLine("------------ Finish ------------ ");
  }
        void run()
        {
            if (director_classes.PrintDebug)
            {
                Console.WriteLine("------------ Start ------------ ");
            }

            Caller myCaller = new Caller();

            // test C++ base class
            using (Base myBase = new Base(100.0))
            {
                makeCalls(myCaller, myBase);
            }

            if (director_classes.PrintDebug)
            {
                Console.WriteLine("--------------------------------");
            }

            // test vanilla C++ wrapped derived class
            using (Base myBase = new Derived(200.0))
            {
                makeCalls(myCaller, myBase);
            }

            if (director_classes.PrintDebug)
            {
                Console.WriteLine("--------------------------------");
            }

            // test director / C# derived class
            using (Base myBase = new CSharpDerived(300.0))
            {
                makeCalls(myCaller, myBase);
            }

            if (director_classes.PrintDebug)
            {
                Console.WriteLine("------------ Finish ------------ ");
            }
        }