public static DriverAndCarsPackage GetPackageCopy(this DriverAndCarsPackage source)
        {
            DriverAndCarsPackage package = new DriverAndCarsPackage();
              package.Driver = source.Driver.GetPrimitiveCopy();

              foreach (CarPrimitive carPrimitive in source.Cars)
              {
            package.Cars.Add(carPrimitive.GetPrimitiveCopy());
              }
              return package;
        }
        public static DriverAndCarsPackage GetDriverAndCarsPackage(this Driver driver)
        {
            DriverAndCarsPackage result = new DriverAndCarsPackage();

              if (driver != null)
              {
            result.Driver = driver.GetPrimitive();

            if (driver.Cars != null)
            {
              foreach(Car car in driver.Cars)
              {
            result.Cars.Add(car.GetPrimitive());
              }
            }
              }
              return result;
        }