Hello, first post here, thank you for all the great content in here!
If I create a single curve by joining a line (A), an arc (B) and a 3rd degree curve © together. (their start and end points match).
How can I split the single curve apart in code? Ideally I’d like to get a list containing the line, the arc and then the 3rd degree curve(s)  ideally as beziers [hope I am not asking too much!].
Things I have tried:

Convert  this will produce lines and arcs but will approximate the curve with arcs :/

ConvertToBeziers – this will give a list of beziers broken in mostly the right places. I could do find the lines with a test for colinarity of control points. Then try and write a test for whether the Bezier is an arc [not sure how!] followed by a merging of consecutive arcs with the same radius.

curve.ToNurbsCurve().
ToPeiceWiseBezier(true)
.MakeNonRational() // to remove the weights
I feel like this should do the same as ConvertToBeziers but it doesn’t – the degree 2 sections (arcs) are distorted in this process – I think in the MakeNonRational call?
 The code mention in this thread ConvertToBeziers however this resamples the curve and adds 10x the number of points.
Maybe you know of a better approach?