// Token: 0x0600077E RID: 1918 RVA: 0x00039475 File Offset: 0x00037675
 private static byte GetAfterVal(int index, byte[] afterOrdinal)
 {
     if (afterOrdinal == null)
     {
         return(byte.MaxValue);
     }
     return(BinaryOrdinalGenerator.GetValEx(index, byte.MaxValue, afterOrdinal));
 }
 // Token: 0x0600077D RID: 1917 RVA: 0x00039466 File Offset: 0x00037666
 private static byte GetBeforeVal(int index, byte[] beforeOrdinal)
 {
     if (beforeOrdinal == null)
     {
         return(0);
     }
     return(BinaryOrdinalGenerator.GetValEx(index, 0, beforeOrdinal));
 }
        // Token: 0x0600077A RID: 1914 RVA: 0x00039368 File Offset: 0x00037568
        public static byte[] GetInbetweenOrdinalValue(byte[] beforeOrdinal, byte[] afterOrdinal)
        {
            int num  = 0;
            int num2 = Math.Max((beforeOrdinal != null) ? beforeOrdinal.Length : 0, (afterOrdinal != null) ? afterOrdinal.Length : 0) + 1;

            byte[] array = new byte[num2];
            if (beforeOrdinal != null && afterOrdinal != null && Utilities.CompareByteArrays(beforeOrdinal, afterOrdinal) >= 0)
            {
                throw new OwaInvalidOperationException("Previous ordinal value is greater then after ordinal value");
            }
            if (beforeOrdinal != null && BinaryOrdinalGenerator.CheckAllZero(beforeOrdinal))
            {
                beforeOrdinal = null;
            }
            if (afterOrdinal != null && BinaryOrdinalGenerator.CheckAllZero(afterOrdinal))
            {
                afterOrdinal = null;
            }
            byte beforeVal;
            byte afterVal;

            for (;;)
            {
                beforeVal = BinaryOrdinalGenerator.GetBeforeVal(num, beforeOrdinal);
                afterVal  = BinaryOrdinalGenerator.GetAfterVal(num, afterOrdinal);
                if (afterVal > beforeVal + 1)
                {
                    break;
                }
                array[num++] = beforeVal;
                if (beforeVal + 1 == afterVal)
                {
                    afterOrdinal = null;
                }
            }
            array[num++] = (afterVal + beforeVal) / 2;
            byte[] array2 = new byte[num];
            Array.Copy(array, array2, num);
            return(array2);
        }
 // Token: 0x06000C83 RID: 3203 RVA: 0x000553D8 File Offset: 0x000535D8
 private void CheckSequence(int index, NodeType node)
 {
     byte[] array  = null;
     byte[] array2 = null;
     if (index > 0)
     {
         NodeType nodeType = this[index - 1];
         array2 = nodeType.NavigationNodeOrdinal;
     }
     if (index < this.Count - 1)
     {
         NodeType nodeType2 = this[index + 1];
         array = nodeType2.NavigationNodeOrdinal;
     }
     byte[] navigationNodeOrdinal = node.NavigationNodeOrdinal;
     if (navigationNodeOrdinal == null || (array != null && Utilities.CompareByteArrays(navigationNodeOrdinal, array) >= 0) || (array2 != null && Utilities.CompareByteArrays(navigationNodeOrdinal, array2) <= 0))
     {
         if (Utilities.CompareByteArrays(array2, array) == 0)
         {
             int i;
             for (i = index - 1; i >= 0; i--)
             {
                 NodeType nodeType3 = this[i];
                 if (Utilities.CompareByteArrays(nodeType3.NavigationNodeOrdinal, array2) != 0)
                 {
                     break;
                 }
             }
             int j;
             for (j = index + 1; j < this.Count; j++)
             {
                 byte[]   array3    = array;
                 NodeType nodeType4 = this[j];
                 if (Utilities.CompareByteArrays(array3, nodeType4.NavigationNodeOrdinal) != 0)
                 {
                     break;
                 }
             }
             byte[] array4;
             if (i >= 0)
             {
                 NodeType nodeType5 = this[i];
                 array4 = nodeType5.NavigationNodeOrdinal;
             }
             else
             {
                 array4 = null;
             }
             array2 = array4;
             byte[] array5;
             if (j < this.Count)
             {
                 NodeType nodeType6 = this[j];
                 array5 = nodeType6.NavigationNodeOrdinal;
             }
             else
             {
                 array5 = null;
             }
             array = array5;
             for (int k = i + 1; k < j; k++)
             {
                 NodeType nodeType7 = this[k];
                 nodeType7.NavigationNodeOrdinal = BinaryOrdinalGenerator.GetInbetweenOrdinalValue(array2, array);
                 NodeType nodeType8 = this[k];
                 array2 = nodeType8.NavigationNodeOrdinal;
             }
             return;
         }
         node.NavigationNodeOrdinal = BinaryOrdinalGenerator.GetInbetweenOrdinalValue(array2, array);
     }
 }