Current logic tracks the "remainder" (as from LevelTagAndRemain) as a char[]. This requires allocating a char[] to hold the remainder, then store it in the LineData context [see LineData.Remain1].
Many consumers want the remainder as a string. So two allocations take place: the char[], and a subsequent new string() [see LineData.Remain].
Name parsing certainly takes advantage of LineData.Remain1.
GedParser.Make() is one place where the gs.Remain() call should probably be replaced with gs.RemainAsString()?
Current logic tracks the "remainder" (as from LevelTagAndRemain) as a char[]. This requires allocating a char[] to hold the remainder, then store it in the LineData context [see LineData.Remain1].
Many consumers want the remainder as a string. So two allocations take place: the char[], and a subsequent new string() [see LineData.Remain].
Name parsing certainly takes advantage of LineData.Remain1.
GedParser.Make() is one place where the gs.Remain() call should probably be replaced with gs.RemainAsString()?