if (Relative.isRelative(c)) {
if (box.relative) {
    public static void paint(Context c, Box box, boolean stylePushed, boolean restyle) {        Box block = (Box) box;        restyle = restyle || box.restyle;//cascade it down        box.restyle = false;//reset        if (block instanceof AnonymousBlockBox) {            InlineRendering.paintInlineContext(c, block, restyle);        } else {            //set the current style            CascadedStyle style = null;            if (!stylePushed) {//if elem == null, this is an anonymous box,so push empty style. && block.element != null) {                style = c.getCss().getCascadedStyle(block.element, restyle);            }            if (style != null) {                c.pushStyle(style);            }            // copy the bounds to we don't mess it up            Rectangle oldBounds = new Rectangle(c.getExtents());            if (block.fixed) {                paintFixed(c, block, restyle);            } else if (block.absolute) {                paintAbsoluteBox(c, block, restyle);            } else {                //text decoration?                IdentValue decoration = c.getCurrentStyle().getIdent(CSSName.TEXT_DECORATION);                if (decoration != IdentValue.NONE) {                    c.getDecorations().addLast(new TextDecoration(decoration, 0, c.getCurrentStyle().getColor(), FontUtil.getLineMetrics(c, null)));                }                //special style for first line?                if (block.firstLineStyle != null) {                    c.addFirstLineStyle(block.firstLineStyle);                }                if (Relative.isRelative(c)) {                    paintRelative(c, block, restyle);                } else {                    paintNormal(c, block, restyle);                }                //pop in case not used                if (block.firstLineStyle != null) {                    c.popFirstLineStyle();                }                //undo text decoration?                if (decoration != IdentValue.NONE) {                    c.getDecorations().removeLast();                }            }            //Uu.p("here it's : " + c.getListCounter());            if (ContentUtil.isListItem(style)) {                paintListItem(c, box);            }            // move the origin down to account for the contents plus the margin, borders, and padding            if (!box.absolute) {                oldBounds.y = oldBounds.y + block.height;                c.setExtents(oldBounds);            }            //reset style            if (style != null) {                c.popStyle();            }        }        if (c.debugDrawBoxes() ||                Configuration.isTrue("xr.renderer.debug.box-outlines", true)) {            GraphicsUtil.drawBox(c.getGraphics(), block, Color.red);        }    }