For a ClRaggedArray with many entries, or a lot of overlapping this algorithm will be slow and/or memory-inefficient. How about just transferring the buffers in question, and making a RaggedArray with the same internal structure?