nsAVLNodeComparitor& aComparitor) {
nsAVLNodeComparator& aComparator) {
avlInsert(nsAVLNode*& aRootNode, nsAVLNode* aNewNode,           nsAVLNodeComparitor& aComparitor) {  eAVLStatus result=eAVL_unknown;    if(!aRootNode) {    aRootNode = aNewNode;    return eAVL_ok;  }    if(aNewNode==aRootNode->mValue) {    return eAVL_duplicate;  }  PRInt32 theCompareResult=aComparitor(aRootNode->mValue,aNewNode->mValue);  if(0 < theCompareResult) { //if(anItem<aRootNode->mValue)    result=avlInsert(aRootNode->mLeft,aNewNode,aComparitor);    if(eAVL_ok==result) {      switch(aRootNode->mSkew){        case eLeft:          avlRotateLeft(aRootNode);          result=eAVL_fail;          break;        case eRight:          aRootNode->mSkew=eNeutral;          result=eAVL_fail;          break;        case eNeutral:          aRootNode->mSkew=eLeft;          break;      } //switch    }//if  } //if  else {     result=avlInsert(aRootNode->mRight,aNewNode,aComparitor);    if(eAVL_ok==result) {      switch(aRootNode->mSkew){        case eLeft:          aRootNode->mSkew=eNeutral;          result=eAVL_fail;          break;        case eRight:          avlRotateRight(aRootNode);          result=eAVL_fail;          break;        case eNeutral:          aRootNode->mSkew=eRight;          break;      } //switch    }  } //if  return result;}