nsTableFrame::ReflowTable(nsIPresContext*          aPresContext,
nsTableFrame::ReflowTable(nsPresContext*          aPresContext,
nsTableFrame::ReflowTable(nsIPresContext*          aPresContext,                          nsHTMLReflowMetrics&     aDesiredSize,                          const nsHTMLReflowState& aReflowState,                          nscoord                  aAvailHeight,                          nsReflowReason           aReason,                          nsIFrame*&               aLastChildReflowed,                          PRBool&                  aDoCollapse,                          PRBool&                  aDidBalance,                          nsReflowStatus&          aStatus){  nsresult rv = NS_OK;  aDoCollapse = PR_FALSE;  aDidBalance = PR_FALSE;  aLastChildReflowed = nsnull;  PRBool haveReflowedColGroups = PR_TRUE;  if (!mPrevInFlow) {    if (NeedStrategyInit()) {      mTableLayoutStrategy->Initialize(aReflowState);      BalanceColumnWidths(aPresContext, aReflowState);       aDidBalance = PR_TRUE;    }    if (NeedStrategyBalance()) {      BalanceColumnWidths(aPresContext, aReflowState);      aDidBalance = PR_TRUE;    }    haveReflowedColGroups = HaveReflowedColGroups();  }  // Constrain our reflow width to the computed table width (of the 1st in flow).  // and our reflow height to our avail height minus border, padding, cellspacing  aDesiredSize.width = GetDesiredWidth();  nsTableReflowState reflowState(*aPresContext, aReflowState, *this, aReason,                                  aDesiredSize.width, aAvailHeight);  ReflowChildren(aPresContext, reflowState, haveReflowedColGroups, PR_FALSE,                 aStatus, aLastChildReflowed, aDesiredSize.mOverflowArea);  if (eReflowReason_Resize == aReflowState.reason) {    if (!DidResizeReflow()) {      // XXX we need to do this in other cases as well, but it needs to be made more incremental      aDoCollapse = PR_TRUE;      SetResizeReflow(PR_TRUE);    }  }    return rv;}