nsIFrame* colFrame = nsnull; colGroupFrame->FirstChild(aPresContext, nsnull, &colFrame);
nsIFrame* colFrame = colGroupFrame->GetFirstChild(nsnull);
nsTableFrame::SetColumnDimensions(nsIPresContext* aPresContext,                                   nscoord         aHeight,                                  const nsMargin& aBorderPadding){  nscoord colHeight = aHeight -= aBorderPadding.top + aBorderPadding.bottom;  nscoord cellSpacingX = GetCellSpacingX();  nsIFrame* colGroupFrame = mColGroups.FirstChild();  PRInt32 colX = 0;  nsPoint colGroupOrigin(aBorderPadding.left + cellSpacingX, aBorderPadding.top);  PRInt32 numCols = GetColCount();  while (nsnull != colGroupFrame) {    nscoord colGroupWidth = 0;    nsIFrame* colFrame = nsnull;    colGroupFrame->FirstChild(aPresContext, nsnull, &colFrame);    nsPoint colOrigin(0,0);    while (nsnull != colFrame) {      const nsStyleDisplay* colDisplay;      colFrame->GetStyleData(eStyleStruct_Display, ((const nsStyleStruct *&)colDisplay));      if (NS_STYLE_DISPLAY_TABLE_COLUMN == colDisplay->mDisplay) {        NS_ASSERTION(colX < numCols, "invalid number of columns");        nscoord colWidth = mColumnWidths[colX];        nsRect colRect(colOrigin.x, colOrigin.y, colWidth, colHeight);        colFrame->SetRect(aPresContext, colRect);        colOrigin.x += colWidth + cellSpacingX;        colGroupWidth += colWidth;        if (numCols - 1 != colX) {          colGroupWidth += cellSpacingX;        }        colX++;      }      colFrame->GetNextSibling(&colFrame);    }    nsRect colGroupRect(colGroupOrigin.x, colGroupOrigin.y, colGroupWidth, colHeight);    colGroupFrame->SetRect(aPresContext, colGroupRect);    colGroupFrame->GetNextSibling(&colGroupFrame);    colGroupOrigin.x += colGroupWidth;  }}