if (nsnull == aFrameList) { return NS_OK; }
if (aFrameList) {  mFrames.InsertFrames(this, aPrevFrame, aFrameList);
nsInlineFrame::InsertFrames(nsIPresContext& aPresContext,                            nsIPresShell& aPresShell,                            nsIAtom* aListName,                            nsIFrame* aPrevFrame,                            nsIFrame* aFrameList){  if (nsnull != aListName) {    return NS_ERROR_INVALID_ARG;  }  if (nsnull == aFrameList) {    return NS_OK;  }  nsresult rv = NS_OK;  rv = MoveOutOfFlow(aPresContext, aFrameList);  if (NS_FAILED(rv)) {    return rv;  }  SectionData sd(aFrameList);  if (sd.HasABlock()) {    // Break insertion up into 3 pieces    nsFrameList section1, section2, section3;    sd.SplitFrameList(section1, section2, section3);    nsIFrame* prevFrame = aPrevFrame;    // First insert the inlines in section1 after prevFrame    if (section1.NotEmpty()) {      nsIFrame* newPrevFrame = section1.LastChild();      rv = InsertInlineFrames(aPresContext, aPresShell, prevFrame,                              section1.FirstChild());      prevFrame = newPrevFrame;    }    // Next insert the frames in section2 after prevFrame    if (NS_SUCCEEDED(rv)) {      nsIFrame* newPrevFrame = section2.LastChild();      rv = InsertBlockFrames(aPresContext, aPresShell, prevFrame,                             section2.FirstChild());      prevFrame = newPrevFrame;    }    // Finally, insert the frames in section3 after prevFrame    if (NS_SUCCEEDED(rv) && section3.NotEmpty()) {      rv = InsertInlineFrames(aPresContext, aPresShell, prevFrame,                              section3.FirstChild());    }  }  else {    // Use simpler path when the insertion is only inline frames    rv = InsertInlineFrames(aPresContext, aPresShell, aPrevFrame, aFrameList);  }  return rv;}