private static string ToString(IList<DoubleUtf16Char> source, int start, int count)
{
var arr = new char[count * 2];
var end = start + count;
var strLen = 0;
for (var i = start; i < end; i++)
{
var x = source[i];
arr[strLen++] = x.X;
if (char.IsHighSurrogate(x.X))
arr[strLen++] = x.Y;
}
return new string(arr, 0, strLen);
}