relayoutOnNewPage(c, contentList, block, styleSetListener, relayoutDataList, runStart, offset);
relayoutRun(c, contentList, block, styleSetListener, relayoutDataList, runStart, offset, true); runEndChild = block.getChild(runEnd); if (c.getRootLayer().crossesPageBreak(c, block.getChild(runStart).getAbsY(), runEndChild.getAbsY() + runEndChild.getHeight())) { block.detachChildren(runStart, offset); relayoutRun(c, contentList, block, styleSetListener, relayoutDataList, runStart, offset, false); }
    private static void processPageBreakAvoidRun(final LayoutContext c, final BlockBox block,             List contentList, Boxing.StyleSetListener styleSetListener, int offset,             RelayoutDataList relayoutDataList, RelayoutData relayoutData,             BlockBox childBox) {        if (offset > 0) {            boolean mightNeedRelayout = false;            int runEnd = -1;            if (offset == contentList.size() - 1 && relayoutData.isEndsRun()) {                mightNeedRelayout = true;                runEnd = offset;            } else if (offset > 0){                RelayoutData previousRelayoutData = relayoutDataList.get(offset-1);                if (previousRelayoutData.isEndsRun()) {                    mightNeedRelayout = true;                    runEnd = offset - 1;                }            }            if (mightNeedRelayout) {                int runStart = relayoutDataList.getRunStart(runEnd);                Box runEndChild = block.getChild(runEnd);                if (c.getRootLayer().crossesPageBreak(c,                         block.getChild(runStart).getAbsY(),                            runEndChild.getAbsY() + runEndChild.getHeight()) &&                        ! checkForPendingInlines(relayoutDataList, runStart, offset)) {                    block.detachChildren(runStart, offset);                    relayoutOnNewPage(c, contentList, block,                             styleSetListener, relayoutDataList, runStart, offset);                }            }        }    }