private void rebuildFormFieldParent(PdfDictionary field, PdfDictionary newField, PdfDocument toDocument) {
if (newField.containsKey(PdfName.Parent)) {
return;
}
PdfDictionary oldParent = field.getAsDictionary(PdfName.Parent);
if (oldParent != null) {
PdfDictionary newParent = oldParent.copyTo(toDocument, Arrays.asList(PdfName.P, PdfName.Kids, PdfName.Parent), false);
if (newParent.isFlushed()) {
newParent = oldParent.copyTo(toDocument, Arrays.asList(PdfName.P, PdfName.Kids, PdfName.Parent), true);
}
rebuildFormFieldParent(oldParent, newParent, toDocument);
PdfArray kids = newParent.getAsArray(PdfName.Kids);
if (kids == null) {
newParent.put(PdfName.Kids, new PdfArray());
}
newField.put(PdfName.Parent, newParent);
}
}
}