protected final String _handleUnusualFieldName(int i) throws IOException, JsonParseException {
  if (i == INT_APOSTROPHE && isEnabled(Feature.ALLOW_SINGLE_QUOTES)) {
    return _parseApostropheFieldName();
  }
  if (!isEnabled(Feature.ALLOW_UNQUOTED_FIELD_NAMES)) {
    _reportUnexpectedChar(i,"was expecting double-quote to start field name");
  }
  final int[] codes=CharTypes.getInputCodeLatin1JsNames();
  final int maxCode=codes.length;
  boolean firstOk;
  if (i < maxCode) {
    firstOk=(codes[i] == 0) && (i < INT_0 || i > INT_9);
  }
 else {
    firstOk=Character.isJavaIdentifierPart((char)i);
  }
  if (!firstOk) {
    _reportUnexpectedChar(i,"was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name");
  }
  int ptr=_inputPtr;
  int hash=0;
  final int inputLen=_inputEnd;
  if (ptr < inputLen) {
    do {
      int ch=_inputBuffer[ptr];
      if (ch < maxCode) {
        if (codes[ch] != 0) {
          int start=_inputPtr - 1;
          _inputPtr=ptr;
          return _symbols.findSymbol(_inputBuffer,start,ptr - start,hash);
        }
      }
 else       if (!Character.isJavaIdentifierPart((char)ch)) {
        int start=_inputPtr - 1;
        _inputPtr=ptr;
        return _symbols.findSymbol(_inputBuffer,start,ptr - start,hash);
      }
      hash=(hash * 31) + ch;
      ++ptr;
    }
 while (ptr < inputLen);
  }
  int start=_inputPtr - 1;
  _inputPtr=ptr;
  return _parseUnusualFieldName2(start,hash,codes);
}

protected final String _handleUnusualFieldName ( int i ) throws IOException , JsonParseException { if ( i == INT_APOSTROPHE && isEnabled ( Feature . ALLOW_SINGLE_QUOTES ) ) { return _parseApostropheFieldName ( ) ; } if ( ! isEnabled ( Feature . ALLOW_UNQUOTED_FIELD_NAMES ) ) { _reportUnexpectedChar ( i , "was expecting double-quote to start field name" ) ; } final int [ ] codes = CharTypes . getInputCodeLatin1JsNames ( ) ; final int maxCode = codes . length ; boolean firstOk ; if ( i < maxCode ) { firstOk = ( codes [ i ] == 0 ) && ( i < INT_0 || i > INT_9 ) ; } else { firstOk = Character . isJavaIdentifierPart ( ( char ) i ) ; } if ( ! firstOk ) { _reportUnexpectedChar ( i , "was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name" ) ; } int ptr = _inputPtr ; int hash = 0 ; final int inputLen = _inputEnd ; if ( ptr < inputLen ) { do { int ch = _inputBuffer [ ptr ] ; if ( ch < maxCode ) { if ( codes [ ch ] != 0 ) { int start = _inputPtr - 1 ; _inputPtr = ptr ; return _symbols . findSymbol ( _inputBuffer , start , ptr - start , hash ) ; } } else if ( ! Character . isJavaIdentifierPart ( ( char ) ch ) ) { int start = _inputPtr - 1 ; _inputPtr = ptr ; return _symbols . findSymbol ( _inputBuffer , start , ptr - start , hash ) ; } hash = ( hash * 31 ) + ch ; ++ ptr ; } while ( ptr < inputLen ) ; } int start = _inputPtr - 1 ; _inputPtr = ptr ; return _parseUnusualFieldName2 ( start , hash , codes ) ; }
method called when we see non - white space character other than double quote , when expecting a field name . in standard mode will just throw an expection ; but in non - standard modes may be able to parse name .
