public IEnumerator <TElement> GetEnumerator()
        {
            Buffer <TElement> buffer = new Buffer <TElement>(this.source);

            if (buffer.count > 0)
            {
                EnumerableSorter <TElement> enumerableSorter = this.GetEnumerableSorter(null);
                int[] array = enumerableSorter.Sort(buffer.items, buffer.count);
                enumerableSorter = null;
                for (int i = 0; i < buffer.count; i++)
                {
                    yield return(buffer.items[array[i]]);
                }
            }
            yield break;
        }
 internal abstract EnumerableSorter <TElement> GetEnumerableSorter(EnumerableSorter <TElement> next);