/// <summary>
 /// Combines two <see cref="VirtualCharSequence"/>s, producing a final
 /// sequence that points at the same underlying data, but spans from the
 /// start of <paramref name="chars1"/> to the end of <paramref name="chars2"/>.
 /// </summary>
 public static VirtualCharSequence FromBounds(
     VirtualCharSequence chars1, VirtualCharSequence chars2)
 {
     Debug.Assert(chars1._leafCharacters == chars2._leafCharacters);
     return(new VirtualCharSequence(
                chars1._leafCharacters,
                TextSpan.FromBounds(chars1._span.Start, chars2._span.End)));
 }
 public void AssertAdjacentTo(VirtualCharSequence virtualChars)
 {
     Debug.Assert(_leafCharacters == virtualChars._leafCharacters);
     Debug.Assert(_span.End == virtualChars._span.Start);
 }
 public Enumerator(VirtualCharSequence virtualCharSequence)
 {
     _virtualCharSequence = virtualCharSequence;
     _position            = -1;
 }