public override void Write(TextWriter writer, Span span) { if (writer == null) { throw new ArgumentNullException("writer"); } if (span.End > this.Length) { throw new ArgumentOutOfRangeException("span"); } if (span.Start >= _left.Length) { _right.Write(writer, new Span(span.Start - _left.Length, span.Length)); } else if (span.End <= _left.Length) { _left.Write(writer, span); } else { _left.Write(writer, Span.FromBounds(span.Start, _left.Length)); _right.Write(writer, Span.FromBounds(0, span.End - _left.Length)); } }