public void CopyTo(T[] array, int arrayIndex, int count)
        {
            if (array == null)
            {
                throw new ArgumentNullException("array");
            }
            if (arrayIndex < 0)
            {
                throw new ArgumentOutOfRangeException("Index cannot be less than zero.");
            }
            if (count < 0)
            {
                throw new ArgumentOutOfRangeException("Count cannot be less than zero.");
            }
            if (arrayIndex > array.Length || count > (array.Length - arrayIndex))
            {
                throw new ArgumentException("Destination array is too small");
            }
            Contract.EndContractBlock();

            int p = arrayIndex;

            count = Math.Min(count, m_count);
            foreach (var item in ColaStore.IterateOrdered(count, m_levels, m_comparer, false))
            {
                array[p++] = item;
            }
            Contract.Assert(p == arrayIndex + count);
        }
 internal IEnumerable <T> IterateOrdered(bool reverse = false)
 {
     return(ColaStore.IterateOrdered(m_count, m_levels, m_comparer, reverse));
 }