/// <summary>
        /// Sorts arrays inside of integer jagged array by preset comparer
        /// </summary>
        /// <param name="jaggedArray">The jagged array.</param>
        /// <param name="compare">The compare.</param>
        /// <param name="index">The index.</param>
        /// <exception cref="ArgumentNullException">throws when jagged array or compare is null</exception>
        /// /// <exception cref="ArgumentOutOfRangeException">
        /// index is out of bounds
        /// </exception>
        public static void BubbleSortFunc(this int[][] jaggedArray, Func <int[], int[], int> compare, int index)
        {
            ValidateIsNull(jaggedArray);

            IComparer <int[]> comparer = new FuncMethodAdapter(compare);

            jaggedArray.BubbleSort(comparer, index, jaggedArray.Length - index);
        }
        /// <summary>
        /// Sorts arrays inside of integer jagged array by preset comparer
        /// </summary>
        /// <param name="jaggedArray">The jagged array.</param>
        /// <param name="compare">The compare.</param>
        /// <param name="index">The index.</param>
        /// <param name="length">The length.</param>
        /// <exception cref="ArgumentNullException">throws when jagged array or compare is null</exception>
        /// /// <exception cref="ArgumentOutOfRangeException">
        /// index or length is out of bounds
        /// </exception>
        public static void BubbleSortFunc(this int[][] jaggedArray, Func <int[], int[], int> compare, int index, int length)
        {
            IComparer <int[]> comparer = new FuncMethodAdapter(compare);

            jaggedArray.BubbleSort(comparer, index, length);
        }