case eHTMLTag_tfoot: if(aContext->mTableStates && aContext->mTableStates->CanOpenTFoot()) { aContext->mTableStates->mHasTFoot=PR_TRUE; result=OpenContainerInContext(aNode,aTag,aContext,aSink); } break;
  virtual nsresult HandleStartToken(nsCParserNode* aNode,eHTMLTags aTag,nsDTDContext* aContext,nsIHTMLContentSink* aSink) {    nsresult result=NS_OK;    switch(aTag) {      case eHTMLTag_caption:        if(aContext->mTableStates && aContext->mTableStates->CanOpenCaption()) {          result=OpenContainerInContext(aNode,aTag,aContext,aSink);  //force the title onto the stack        }        break;      case eHTMLTag_col:        result=aSink->AddLeaf(*aNode);         break;      case eHTMLTag_colgroup:        if(aContext->mTableStates && aContext->mTableStates->CanOpenCols()) {          result=OpenContainerInContext(aNode,aTag,aContext,aSink);  //force the title onto the stack        }        break;      case eHTMLTag_thead:      //nothing to do for these empty tags...              if(aContext->mTableStates && aContext->mTableStates->CanOpenTHead()) {          aContext->mTableStates->mHasTHead=PR_TRUE;          result=OpenContainerInContext(aNode,aTag,aContext,aSink);  //force the title onto the stack        }        break;      case eHTMLTag_tbody:        aContext->mTableStates->mHasTBody=PR_TRUE;        result=OpenContainerInContext(aNode,aTag,aContext,aSink);  //force the title onto the stack        break;      case eHTMLTag_tfoot:        if(aContext->mTableStates && aContext->mTableStates->CanOpenTFoot()) {          aContext->mTableStates->mHasTFoot=PR_TRUE;          result=OpenContainerInContext(aNode,aTag,aContext,aSink);  //force the title onto the stack        }        break;      case eHTMLTag_tr:      case eHTMLTag_th:            if(aContext->mTableStates) {          if(aContext->mTableStates->CanOpenTBody()) {            CToken* theToken=(CStartToken*)aContext->mTokenAllocator->CreateTokenOfType(eToken_start,eHTMLTag_tbody);            nsCParserNode* theNode=aContext->mNodeAllocator->CreateNode(theToken, 0);            result=HandleStartToken(theNode,eHTMLTag_tbody,aContext,aSink);          }          if(NS_SUCCEEDED(result)) {            CElement *theElement=GetElement(eHTMLTag_tbody);            if(theElement) {              result=theElement->HandleStartToken(aNode,aTag,aContext,aSink);            }          }        }        break;      default:        break;    }    return result;   }