firstLetterStyle = ((FirstLetterStyle) o).getStyle();
block.firstLetterStyle = ((FirstLetterStyle) o).getStyle();
    public Box layoutChildren(Context c, Box box) {        BlockBox block = (BlockBox) box;        c.shrinkExtents(block);        // save the original height in case it        // has a fixed height        //not used: int original_height = block.height;        // prepare for the list items        int old_counter = c.getListCounter();        c.setListCounter(0);        java.util.List contentList = box.getContent().getChildContent(c);        if (contentList.size() == 0) return box;//we can do this if there is no content, right?        Iterator contentIterator = contentList.iterator();        //TODO: how to pass these on to first child?        CascadedStyle firstLineStyle = null;        CascadedStyle firstLetterStyle = null;        while (contentIterator.hasNext()) {            Object o = contentIterator.next();            //TODO: can we do this? contentIterator.remove();//chop it off, no need to keep it?            if (o instanceof FirstLineStyle) {//can actually only be the first object in list                firstLineStyle = ((FirstLineStyle) o).getStyle();                continue;            }            if (o instanceof FirstLetterStyle) {//can actually only be the first or second object in list                firstLetterStyle = ((FirstLetterStyle) o).getStyle();                continue;            }            Content currentContent = (Content) o;            Box child_box = null;            if (!(currentContent instanceof AnonymousBlockContent)) {                //TODO:handle run-ins. For now, treat them as blocks                Layout layout = c.getLayout(currentContent.getElement());                // update the counter for printing OL list items                c.setListCounter(c.getListCounter() + 1);                // execute the layout and get the return bounds                //c.parent_box = box;                c.placement_point = new Point(0, box.height);                c.getBlockFormattingContext().translate(0, box.height);                child_box = layout.layout(c, currentContent);                c.getBlockFormattingContext().translate(0, -box.height);                child_box.list_count = c.getListCounter();            } else { //AnonymousBlockContent, fail fast if not                AnonymousBlockContent anonymous = (AnonymousBlockContent) currentContent;                Layout layout = new AnonymousBoxLayout();                child_box = layout.layout(c, anonymous);            }            box.addChild(child_box);            // set the child_box location            child_box.x = 0;            child_box.y = box.height;            //joshy fix the 'fixed' stuff later            // if fixed or abs then don't modify the final layout bounds            // because fixed elements are removed from normal flow            if (child_box.fixed) {                // put fixed positioning in later                Fixed.positionFixedChild(c, child_box);            }            if (child_box.isAbsolute()) {                Absolute.positionAbsoluteChild(c, child_box);            }                        // skip adjusting the parent box if the child            // doesn't affect flow layout            if (LayoutUtil.isOutsideNormalFlow(child_box)) {                continue;            }            // increase the final layout width if the child was greater            if (child_box.width > box.width) {                box.width = child_box.width;            }            // increase the final layout height by the height of the child            box.height += child_box.height;        }        c.addMaxWidth(box.width);        c.setListCounter(old_counter);        c.unshrinkExtents(block);        return block;    }