/// <summary>
 /// Binary searches the table for a <c>rid</c> whose key column at index
 /// <paramref name="keyColIndex"/> is equal to <paramref name="key"/>.
 /// </summary>
 /// <param name="tableSource">Table to search</param>
 /// <param name="keyColIndex">Key column index</param>
 /// <param name="key">Key</param>
 /// <returns>The <c>rid</c> of the found row, or 0 if none found</returns>
 protected abstract uint BinarySearch(MDTable tableSource, int keyColIndex, uint key);
 /// <summary>
 /// Finds all rows owned by <paramref name="key"/> in table <paramref name="tableSource"/>
 /// whose index is <paramref name="keyColIndex"/>. Should be called if <paramref name="tableSource"/>
 /// could be unsorted.
 /// </summary>
 /// <param name="tableSource">Table to search</param>
 /// <param name="keyColIndex">Key column index</param>
 /// <param name="key">Key</param>
 /// <returns>A <see cref="RidList"/> instance</returns>
 protected virtual RidList FindAllRowsUnsorted(MDTable tableSource, int keyColIndex, uint key) => FindAllRows(tableSource, keyColIndex, key);
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="mdTable">The MD table</param>
 /// <param name="keyColIndex">Index of key column</param>
 public SortedTable(MDTable mdTable, int keyColIndex)
 {
     InitializeKeys(mdTable, keyColIndex);
     Array.Sort(rows);
 }