internal int Recursive_Sort_Insert(Builder_Page_File newPage_File, int start, int end)
        {
            int startIndex = start;
            int endIndex   = end;
            int midIndex   = (int)Math.Ceiling((double)(endIndex - startIndex) / 2) + startIndex;

            if (endIndex - startIndex <= 1)
            {
                if (newPage_File.CompareTo(this[startIndex]) <= 0)
                {
                    List.Insert(startIndex, newPage_File);
                    return(startIndex);
                }
                else
                {
                    List.Insert(endIndex, newPage_File);
                    return(endIndex);
                }
            }
            else
            {
                if (newPage_File.CompareTo(this[midIndex]) < 0)
                {
                    endIndex = midIndex;
                }
                else
                {
                    startIndex = midIndex;
                }

                return(Recursive_Sort_Insert(newPage_File, startIndex, endIndex));
            }
        }
        /// <summary> Insert a new page into this collection, based on the file name </summary>
        /// <param name="newPage_File"></param>
        /// <returns></returns>
        internal int Insert(Builder_Page_File newPage_File)
        {
            if (List.Count == 0)
            {
                return(List.Add(newPage_File));
            }

            if (newPage_File.CompareTo(this[0]) <= 0)
            {
                List.Insert(0, newPage_File);
                return(0);
            }

            if (newPage_File.CompareTo(this[List.Count - 1]) >= 0)
            {
                return(List.Add(newPage_File));
            }

            return(Recursive_Sort_Insert(newPage_File, 0, List.Count - 1));
        }
        /// <summary> Insert a new page into this collection, based on the file name </summary>
        /// <param name="NewPageFile"></param>
        /// <returns></returns>
        internal int Insert(Builder_Page_File NewPageFile)
        {
            if (List.Count == 0)
            {
                return List.Add(NewPageFile);
            }

            if (NewPageFile.CompareTo(this[0]) <= 0)
            {
                List.Insert(0, NewPageFile);
                return 0;
            }

            if (NewPageFile.CompareTo(this[List.Count - 1]) >= 0)
            {
                return List.Add(NewPageFile);
            }

            return Recursive_Sort_Insert(NewPageFile, 0, List.Count - 1);
        }
        internal int Recursive_Sort_Insert(Builder_Page_File NewPageFile, int Start, int End)
        {
            int startIndex = Start;
            int endIndex = End;
            int midIndex = (int) Math.Ceiling((double) (endIndex - startIndex)/2) + startIndex;
            if (endIndex - startIndex <= 1)
            {
                if (NewPageFile.CompareTo(this[startIndex]) <= 0)
                {
                    List.Insert(startIndex, NewPageFile);
                    return startIndex;
                }

                List.Insert(endIndex, NewPageFile);
                return endIndex;
            }

            if (NewPageFile.CompareTo(this[midIndex]) < 0)
                endIndex = midIndex;
            else
                startIndex = midIndex;

            return Recursive_Sort_Insert(NewPageFile, startIndex, endIndex);
        }