/// <summary>
 /// Sorts the elements in the <see cref="KeyedCollection2{TKey, TItem}"/> by their key value,
 /// using the specified <see cref="IComparer{TKey}"/>.
 /// </summary>
 public void SortByKeys(IComparer<TKey> keyComparer)
 {
     var comparer = new Comparer2<TItem>((x, y) => keyComparer.Compare(GetKeyForItem(x), GetKeyForItem(y)));
     Sort(comparer);
 }
 /// <summary>
 /// Sorts the elements in the <see cref="KeyedCollection2{TKey, TItem}"/> by their key value,
 /// using the specified <see cref="Comparison{TKey}"/>.
 /// </summary>
 /// <param name="keyComparison"></param>
 public void SortByKeys(Comparison<TKey> keyComparison)
 {
     var comparer = new Comparer2<TItem>((x, y) => keyComparison(GetKeyForItem(x), GetKeyForItem(y)));
     Sort(comparer);
 }
 /// <summary>
 /// Sorts the elements in the <see cref="KeyedCollection2{TKey, TItem}"/> by their values,
 /// using the specified <see cref="Comparison{TItem}"/>.
 /// </summary>
 /// <param name="comparison"></param>
 public void Sort(Comparison<TItem> comparison)
 {
     var newComparer = new Comparer2<TItem>((x, y) => comparison(x, y));
     Sort(newComparer);
 }