static int CodePointAtImpl(char[] a, int index, int limit) { char c1 = a[index++]; if (char.IsHighSurrogate(c1)) { if (index < limit) { char c2 = a[index]; if (char.IsLowSurrogate(c2)) { return ToCodePoint(c1, c2); } } } return c1; }