parent->FirstChild(aPresContext, nsnull, &firstChild);
nsIFrame* firstChild = parent->GetFirstChild(nsnull);
GetPrevChildFrame(nsIPresContext* aPresContext, nsIFrame* aFrame){  NS_PRECONDITION(aFrame, "null pointer");  // Get its previous sibling. Because we have a singly linked list we  // need to search from the first child  nsIFrame* parent = aFrame->GetParent();  nsIFrame* firstChild;  nsIFrame* prevSibling;  parent->FirstChild(aPresContext, nsnull, &firstChild);  NS_ASSERTION(firstChild, "parent has no first child");  nsFrameList frameList(firstChild);  prevSibling = frameList.GetPrevSiblingFor(aFrame);  // If there's no previous sibling, then check if the parent frame  // has a prev-in-flow and look there  if (!prevSibling) {    parent->GetPrevInFlow(&parent);    if (parent) {      parent->FirstChild(aPresContext, nsnull, &firstChild);      frameList.SetFrames(firstChild);      prevSibling = frameList.LastChild();    }  }    // Get the first-in-flow  while (PR_TRUE) {    nsIFrame* prevInFlow;    prevSibling->GetPrevInFlow(&prevInFlow);    if (prevInFlow) {      prevSibling = prevInFlow;    } else {      break;    }  }  return prevSibling;}