(kTab==*cp)) {
(kTab==*cp) || (kEqual == *cp)) {
  PRInt32 GetNextWord() {    const PRUnichar *cp=mBuffer+mOffset+mLength;  //skip last word    mLength=0;  //reset this    mOffset=-1; //reset this            //now skip whitespace...    PRUnichar target=0;    PRBool    done=PR_FALSE;    while((!done) && (cp++<mEndBuffer)) {      switch(*cp) {        case kSpace:  case kNewLine:        case kCR:     case kTab:          continue;        case kQuote:        case kMinus:          target=*cp;          done=PR_TRUE;          break;        default:          done=PR_TRUE;          break;      }    }    if(cp<mEndBuffer) {        const PRUnichar *firstcp=cp; //hang onto this...            PRInt32 theDashCount=2;      cp++; //just skip first letter to simplify processing...      //ok, now find end of this word      while(cp++<mEndBuffer) {        if(kQuote==target) {          if(kQuote==*cp) {            cp++;            break; //we found our end...          }        }        else if(kMinus==target) {          //then let's look for SGML comments          if(kMinus==*cp) {            if(4==++theDashCount) {              cp++;              break;            }          }        }        else {          if((kSpace==*cp) ||             (kNewLine==*cp) ||             (kGreaterThan==*cp) ||             (kQuote==*cp) ||             (kCR==*cp) ||             (kTab==*cp)) {            break;          }        }      }      mLength=cp-firstcp;      mOffset = (0<mLength) ? firstcp-mBuffer : -1;    }    return mOffset;  }