if (prev == ib) {
if (hovered_element == panel.hovered_element) {
    private void restyle(Box ib) {        //Uu.p("under cursor = " + ib);        boolean needRepaint = false;        // return this box or one if it's parents to find the deepest hovered element.        // if none then just return null        ib = getDeepestHover(ib);        //Uu.p("deepest hover = " + ib);        if (prev == ib) {            return;        }        if (ib == null)            panel.hovered_element = null;        else            panel.hovered_element = ib.element;        // if moved out of the old block then unstyle it        if (prev != null) {            boolean restyled = panel.getSharedContext().getCss().isHoverStyled(prev.element);            if (restyled) {                prev.restyle = true;//notify rendering to restyle the box                //prev.hover = false;                needRepaint = true;            }        }        // return if no new hovered block;        if (ib != null) {            //System.out.println("Using: " + ib);            /*                if the box is an inline box                 and if it is a text only box, meaning it                 does not have it's own element but is merely a child                 of an enclosing box.                 is inline element            */            // Uu.p("real element = " + ib.getRealElement());            // skip it if it's just a text child of a block. we should            // do the block instead            //if (ib.isInlineElement() || !(ib instanceof InlineBox)) {            boolean restyled = panel.getSharedContext().getCss().isHoverStyled(ib.element);            //Uu.p("was styled = " + ib);            // if the block isn't a hover then go up to the parent.            // if the block has a hover style then restyle it            if (restyled) {                ib.restyle = true;                //ib.hover = true;                needRepaint = true;            }            //}        }        prev = ib;        if (needRepaint) panel.repaint();    }