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))); }