private GeometricObject CreateInstance()
        {
            GeometricObject newInstance = CreateInstanceCore();

            if (GetType() != newInstance.GetType())
            {
                string message = String.Format(
                    CultureInfo.InvariantCulture,
                    "Cannot clone geometric object. The derived class {0} does not implement CreateInstanceCore().",
                    GetType());

                throw new InvalidOperationException(message);
            }

            return(newInstance);
        }