nsIFrame*& aFrameResult, PRBool& aStopPulling)
nsReflowStatus& aReflowResult)
nsBlockFrame::PullFrame(nsBlockReflowState& aState,                        nsLineBox* aLine,                        nsLineBox** aFromList,                        PRBool aUpdateGeometricParent,                        nsIFrame*& aFrameResult,                        PRBool& aStopPulling){  nsLineBox* fromLine = *aFromList;  NS_ABORT_IF_FALSE(fromLine, "bad line to pull from");  NS_ABORT_IF_FALSE(fromLine->GetChildCount(), "empty line");  NS_ABORT_IF_FALSE(aLine->GetChildCount(), "empty line");  if (fromLine->IsBlock()) {    // If our line is not empty and the child in aFromLine is a block    // then we cannot pull up the frame into this line. In this case    // we stop pulling.    aStopPulling = PR_TRUE;    aFrameResult = nsnull;  }  else {    // Take frame from fromLine    nsIFrame* frame = fromLine->mFirstChild;    aLine->SetChildCount(aLine->GetChildCount() + 1);    PRInt32 fromLineChildCount = fromLine->GetChildCount();    if (0 != --fromLineChildCount) {      // Mark line dirty now that we pulled a child      fromLine->SetChildCount(fromLineChildCount);      fromLine->MarkDirty();      frame->GetNextSibling(&fromLine->mFirstChild);    }    else {      // Free up the fromLine now that it's empty      *aFromList = fromLine->mNext;      delete fromLine;    }    // Change geometric parents    if (aUpdateGeometricParent) {      // Before we set the new parent frame get the current parent      nsIFrame* oldParentFrame;      frame->GetParent(&oldParentFrame);      frame->SetParent(this);      // When pushing and pulling frames we need to check for whether any      // views need to be reparented      NS_ASSERTION(oldParentFrame != this, "unexpected parent frame");      nsHTMLContainerFrame::ReparentFrameView(frame, oldParentFrame, this);            // The frame is being pulled from a next-in-flow; therefore we      // need to add it to our sibling list.      if (nsnull != aState.mPrevChild) {        aState.mPrevChild->SetNextSibling(frame);      }      frame->SetNextSibling(nsnull);    }    // Stop pulling because we found a frame to pull    aStopPulling = PR_TRUE;    aFrameResult = frame;#ifdef DEBUG    VerifyLines(PR_TRUE);#endif  }  return NS_OK;}