public PolyCurve PolycurveToNative(Polycurve polycurve)
        {
            DS.Curve[] curves = new DS.Curve[polycurve.segments.Count];
            for (var i = 0; i < polycurve.segments.Count; i++)
            {
                switch (polycurve.segments[i])
                {
                case Line curve:
                    curves[i] = LineToNative(curve);
                    break;

                case Arc curve:
                    curves[i] = ArcToNative(curve);
                    break;

                case Circle curve:
                    curves[i] = CircleToNative(curve);
                    break;

                case Ellipse curve:
                    curves[i] = EllipseToNative(curve);
                    break;

                case Spiral curve:
                    curves[i] = PolylineToNative(curve.displayValue);
                    break;

                case Polycurve curve:
                    curves[i] = PolycurveToNative(curve);
                    break;

                case Polyline curve:
                    curves[i] = PolylineToNative(curve);
                    break;

                case Curve curve:
                    curves[i] = CurveToNative(curve);
                    break;
                }
            }

            PolyCurve polyCrv = null;

            if (curves.Any())
            {
                polyCrv = PolyCurve.ByJoinedCurves(curves);
                polyCrv = polyCrv.SetDynamoProperties <PolyCurve>(GetDynamicMembersFromBase(polycurve));
            }

            return(polyCrv);
        }