iTextSharp.text.pdf.PdfStructTreeController.FindAndCopyMarks C# (CSharp) Метод

FindAndCopyMarks() приватный Метод

private FindAndCopyMarks ( PdfArray pages, int arrayNumber, int newArrayNumber ) : returnType
pages PdfArray
arrayNumber int
newArrayNumber int
Результат returnType
        private returnType FindAndCopyMarks(PdfArray pages, int arrayNumber, int newArrayNumber)
        {
            if (pages.GetAsNumber(0).IntValue > arrayNumber)
            return returnType.BELOW;
            if (pages.GetAsNumber(pages.Size - 2).IntValue < arrayNumber)
            return returnType.ABOVE;
            int cur = pages.Size/4;
            int begin = 0;
            int curNumber;
            while (true) {
            curNumber = pages.GetAsNumber((begin + cur) * 2).IntValue;
            if (curNumber == arrayNumber) {
                PdfObject res = writer.CopyObject(pages[((begin + cur) * 2 + 1)], true, false);
                if (!(res is PdfIndirectReference))
                    res = writer.AddToBody(res).IndirectReference;
                structureTreeRoot.AddPageMark(newArrayNumber, (PdfIndirectReference)res);
                AddKid(structureTreeRoot, res);
                return returnType.FOUND;
            }
            if (curNumber < arrayNumber) {
                begin += cur;
                cur /= 2;
                if (cur == 0)
                    cur = 1;
                if (cur + begin == pages.Size)
                    return returnType.NOTFOUND;
                continue;
            }
            if (cur + begin == 0)
                return returnType.BELOW;
            if (cur == 0)
                return returnType.NOTFOUND;
            cur /= 2;
            }
        }