/// <summary>
        /// Instantiates a PathElement based on the PathElementType
        /// </summary>
        /// <param name="elementType">PathElementType</param>
        /// <returns>ICanvasPathElement</returns>
        private static ICanvasPathElement CreatePathElement(PathElementType elementType)
        {
            ICanvasPathElement result = null;

            switch (elementType)
            {
            case PathElementType.MoveTo:
                result = new MoveToElement();
                break;

            case PathElementType.Line:
                result = new LineElement();
                break;

            case PathElementType.HorizontalLine:
                result = new HorizontalLineElement();
                break;

            case PathElementType.VerticalLine:
                result = new VerticalLineElement();
                break;

            case PathElementType.QuadraticBezier:
                result = new QuadraticBezierElement();
                break;

            case PathElementType.SmoothQuadraticBezier:
                result = new SmoothQuadraticBezierElement();
                break;

            case PathElementType.CubicBezier:
                result = new CubicBezierElement();
                break;

            case PathElementType.SmoothCubicBezier:
                result = new SmoothCubicBezierElement();
                break;

            case PathElementType.Arc:
                result = new ArcElement();
                break;

            case PathElementType.ClosePath:
                result = new ClosePathElement();
                break;
            }

            return(result);
        }
        /// <summary>
        /// Creates a default Path Element for the given PathElementType
        /// </summary>
        /// <param name="elementType">PathElementType</param>
        /// <returns>ICanvasPathElement</returns>
        internal static ICanvasPathElement CreateDefaultPathElement(PathElementType elementType)
        {
            ICanvasPathElement result;

            switch (elementType)
            {
            case PathElementType.ClosePath:
                result = new ClosePathElement();
                break;

            default:
                throw new ArgumentException("Creation of Only Default ClosePathElement is supported.", nameof(elementType));
            }

            return(result);
        }