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

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

private CopyPageMarks ( PdfDictionary parentTree, PdfNumber arrayNumber, int newArrayNumber ) : returnType
parentTree PdfDictionary
arrayNumber PdfNumber
newArrayNumber int
Результат returnType
        private returnType CopyPageMarks(PdfDictionary parentTree, PdfNumber arrayNumber, int newArrayNumber)
        {
            PdfArray pages = (PdfArray)GetDirectObject(parentTree.Get(PdfName.NUMS));
            if (pages == null) {
            PdfArray kids = (PdfArray)GetDirectObject(parentTree.Get(PdfName.KIDS));
            if (kids == null)
                return returnType.NOTFOUND;
            int cur = kids.Size/2;
            int begin = 0;
            while (true) {
                PdfDictionary kidTree = (PdfDictionary)GetDirectObject(kids[cur + begin]);
                switch (CopyPageMarks(kidTree,arrayNumber,newArrayNumber)) {
                    case returnType.FOUND:
                        return returnType.FOUND;
                    case returnType.ABOVE:
                        begin += cur;
                        cur /= 2;
                        if (cur == 0)
                            cur = 1;
                        if (cur + begin == kids.Size)
                            return returnType.ABOVE;
                        break;
                    case returnType.BELOW:
                        if (cur + begin == 0)
                            return returnType.BELOW;
                        if (cur == 0)
                            return returnType.NOTFOUND;
                        cur /= 2;
                        break;
                    default:
                        return returnType.NOTFOUND;
                }
            }
            } else {
            return FindAndCopyMarks(pages, arrayNumber.IntValue, newArrayNumber);
            }
        }