internal static void Sort <T>(this List <T> list, IComparer comparer)
        {
            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            IComparer <T> comparerT = comparer as IComparer <T>;

            if (comparerT == null)
            {
                comparerT = new ComparerHelper <T>(comparer);
            }

            list.Sort(comparerT);
        }
        internal static int BinarySearch <T>(this List <T> list, int index, int count, T item, IComparer comparer)
        {
            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            IComparer <T> comparerT = comparer as IComparer <T>;

            if (comparerT == null)
            {
                comparerT = new ComparerHelper <T>(comparer);
            }

            return(list.BinarySearch(index, count, item, comparerT));
        }