public override int GetLineNumberFromPosition(int position)
        {
            if ((position < 0) || (position > this.Length))
            {
                throw new ArgumentOutOfRangeException("position");
            }

            return((position <= _left.Length)
                   ? _left.GetLineNumberFromPosition(position)
                   : (_left.LineBreakCount +
                      _right.GetLineNumberFromPosition(position - _left.Length)));
        }