code: function readIdentifierPart(text, offset, limit) {
                      var hasEscape = false;
                      while (offset < limit) {
                          var code = text.charCodeAt(offset);
                          switch (code) {
                              //case isIdentifierStartCharacter(code) && code:
                              case (code >= /*a*/97 && code <= /*z*/122) && code:
                              case (code >= /*A*/65 && code <= /*Z*/90) && code:
                              case /*$*/36:
                              case /*_*/95:
                                  break;
  
                              case isWhitespace(code) && code:
                              case isLineTerminator(code) && code:
                                  return hasEscape ? -offset : offset;
  
                              case (code > 0x7f) && code:
                                  break;
  
                                  //case isDecimalDigit(code) && code:
                              case (code >= /*0*/48 && code <= /*9*/57) && code:
                                  break;
  
                              case /*\*/92:
                                  if (offset + 5 < limit) {
                                      if (text.charCodeAt(offset + 1) === /*u*/117 &&
                                          isHexDigit(text.charCodeAt(offset + 2)) &&
                                          isHexDigit(text.charCodeAt(offset + 3)) &&
                                          isHexDigit(text.charCodeAt(offset + 4)) &&
                                          isHexDigit(text.charCodeAt(offset + 5))) {
                                          offset += 5;
                                          hasEscape = true;
                                          break;
                                      }
                                  }
                                  return hasEscape ? -offset : offset;
  
                              default:
                                  return hasEscape ? -offset : offset;
                          }
                          offset++;
                      }
                      return hasEscape ? -offset : offset;
                  }
docs: /*
  Hand-inlined into readIdentifierPart
  function isIdentifierPartCharacter(code) {
  See comment in isIdentifierStartCharacter.
  
  Mn | Mc | Nd | Pc
  <ZWNJ> | <ZWJ>
  
  switch (code) {
  case isIdentifierStartCharacter(code) && code:
  case isDecimalDigit(code) && code:
  return true;
  
  default:
  return false;
  }
  }