nsIFrame* firstChildFrame; lastInFlow->FirstChild(aPresContext, nsnull, &firstChildFrame);
nsIFrame* firstChildFrame = lastInFlow->GetFirstChild(nsnull);
GetLastChildFrame(nsIPresContext* aPresContext,                  nsIFrame*       aFrame,                  nsIContent*     aContent){  NS_PRECONDITION(aFrame, "NULL frame pointer");  // Get the last in flow frame  nsIFrame* lastInFlow = aFrame->GetLastInFlow();  // Get the last child frame  nsIFrame* firstChildFrame;  lastInFlow->FirstChild(aPresContext, nsnull, &firstChildFrame);  if (firstChildFrame) {    nsFrameList frameList(firstChildFrame);    nsIFrame*   lastChildFrame = frameList.LastChild();    NS_ASSERTION(lastChildFrame, "unexpected error");    // Get the frame's first-in-flow. This matters in case the frame has    // been continuted across multiple lines    lastChildFrame = lastChildFrame->GetFirstInFlow();        // If the last child frame is a pseudo-frame, then return its last child.    // Note that the frame we create for the generated content is also a    // pseudo-frame and so don't drill down in that case    if (lastChildFrame &&        lastChildFrame->IsPseudoFrame(aContent) &&        !lastChildFrame->IsGeneratedContentFrame()) {      return GetLastChildFrame(aPresContext, lastChildFrame, aContent);    }    return lastChildFrame;  }  return nsnull;}