bool hasUnconditionedDeref(nsCString& aName,CCPPTokenizer& aTokenizer,int anIndex) {
bool hasUnconditionedDeref(nsAFlatCString& aName,CCPPTokenizer& aTokenizer,int anIndex) {
  bool hasUnconditionedDeref(nsCString& aName,CCPPTokenizer& aTokenizer,int anIndex) {    bool result=false;    enum eState {eFailure,eFindIf,eFindDeref};    CToken* theToken=0;    eState  theState=eFindDeref;    int     theIndex=anIndex+1;        while(eFailure!=theState){      CToken* theToken=aTokenizer.getTokenAt(theIndex);      if(theToken) {        nsCString& theString=theToken->getStringValue();        int     theType=theToken->getTokenType();        PRUnichar   theChar=theString[0];        switch(theState){          case eFindDeref:              switch(theType) {                case eToken_whitespace:                case eToken_comment:                case eToken_newline:                  theIndex++;                  break;                default:                  if(0==theString.Compare("->",true,2)) {                    theIndex=anIndex-1; //now start looking backwards...                    theState=eFindIf;                  }                  else theState=eFailure;              }//switch              break;          case eFindIf:            switch(theType) {              case eToken_whitespace:              case eToken_comment:              case eToken_newline:                theIndex--;                break;              case eToken_semicolon:                return true;                break;              case eToken_operator:                switch(theChar){                  case '{':                  case '+':                  case '-':                  case '=':                  case '*':                  case '%':                    return true;                  default:                    break;                }                theIndex-=1;                break;              case eToken_identifier:                if(0==theString.Compare("if",true,2)){                  return false;                }                else if(0==theString.Compare(aName)){                  return false;                }                else if(0==theString.Compare("while",true,5)){                  return false;                }                return true;              default:                theIndex--;            } //switch            break;        }//switch      }//if      else theState=eFailure;    }//while    return result;  }