virtual nsresult OpenContainerInContext(nsCParserNode *aNode,eHTMLTags aTag,nsDTDContext *aContext,nsIHTMLContentSink *aSink) { NS_ASSERTION(aContext!=nsnull,"need a valid context"); nsresult result=NS_OK;     if(aContext) { if(!aContext->mFlags.mHadBody) { result=OpenContext(aNode,aTag,aContext,aSink); aContext->mFlags.mHadBody=PR_TRUE; } } return (NS_SUCCEEDED(result))? OpenContainer(aNode,aTag,aContext,aSink):result;
virtual nsresult OpenContainerInContext(nsCParserNode *aNode,eHTMLTags aTag,nsDTDContext *aContext,nsIHTMLContentSink *aSink) { OpenContext(aNode,aTag,aContext,aSink); return NS_OK;
  virtual nsresult OpenContainerInContext(nsCParserNode *aNode,eHTMLTags aTag,nsDTDContext *aContext,nsIHTMLContentSink *aSink) {    NS_ASSERTION(aContext!=nsnull,"need a valid context");    nsresult result=NS_OK;    // Since BODY is optional, we might come across more than one BODY!.    // That is, one that's auto opened and one that came from the document itself.    // If that's the case then make sure that we don't open up multiple contexts, however,    // don't forget to inform the sink because it needs to account for the BODY attributes.    if(aContext) {      if(!aContext->mFlags.mHadBody) {        result=OpenContext(aNode,aTag,aContext,aSink);        aContext->mFlags.mHadBody=PR_TRUE;      }    }    return (NS_SUCCEEDED(result))? OpenContainer(aNode,aTag,aContext,aSink):result;  }