code: private void organizeContent()
      {
          TableRowBox anonrow = null;
          
          for (Iterator<Box> it = nested.iterator(); it.hasNext(); )
          {
              Box box = it.next();
              if (box instanceof ElementBox && ((ElementBox) box).getDisplay() == ElementBox.DISPLAY_TABLE_ROW)
              {
                  addRow((TableRowBox) box);
                  //finish and add possible previous anonymous row
                  if (anonrow != null)
                  {
                      anonrow.endChild = anonrow.nested.size();
                      addSubBox(anonrow);
                  }
                  anonrow = null;
              }
              else
              {
                  if (anonrow == null)
                  {
                      Element anonelem = viewport.getFactory().createAnonymousElement(getParent().getParent().getElement().getOwnerDocument(), "tr", "table-row"); 
                      anonrow = new TableRowBox(anonelem, g, ctx);
                      anonrow.adoptParent(this);
                      anonrow.setStyle(viewport.getFactory().createAnonymousStyle("table-row"));
                      addRow(anonrow);
                  }
                  anonrow.addSubBox(box);
                  anonrow.isempty = false;
                  box.setContainingBlockBox(anonrow);
                  box.setParent(anonrow);
                  it.remove();
                  endChild--;
              }
          }
          if (anonrow != null)
          {
              anonrow.endChild = anonrow.nested.size();
              addSubBox(anonrow);
          }
      }
docs: Goes through the list of child boxes and creates the anonymous rows if necessary.