code: private void organizeContent()
      {
          cells = new Vector<TableCellBox>();
          TableCellBox anoncell = null;
          
          int size = nested.size();
          List<Box> toremove = new ArrayList<Box>();
          for (int i = 0; i < size; i++)
          {
              Box box = nested.get(i);
              
              if (box instanceof TableCellBox)
              {
                  addCell((TableCellBox) box);
                  //finish and add possible previous anonymous cell
                  if (anoncell != null)
                  {
                      anoncell.endChild = anoncell.nested.size();
                      addSubBox(anoncell);
                  }
                  anoncell = null;
              }
              else
              {
                  if (anoncell == null)
                  {
                      Element anonelem = viewport.getFactory().createAnonymousElement(getParent().getParent().getParent().getElement().getOwnerDocument(), "td", "table-cell");
                      anoncell = new TableCellBox(anonelem, g, ctx);
                      anoncell.adoptParent(this);
                      anoncell.setStyle(viewport.getFactory().createAnonymousStyle("table-cell"));
                      addCell(anoncell);
                  }
                  anoncell.addSubBox(box);
                  anoncell.isempty = false;
                  if (box.isBlock()) anoncell.contblock = true;
                  box.setContainingBlockBox(anoncell);
                  box.setParent(anoncell);
                  toremove.add(box);
                  endChild--;
              }
          }
          nested.removeAll(toremove);
          
          if (anoncell != null)
          {
              anoncell.endChild = anoncell.nested.size();
              addSubBox(anoncell);
          }
      }
docs: Goes through the list of child boxes and creates the anonymous rows if necessary.