/*
 /**********************************************************
 /* Public API, traversal, nextXxxValue/nextFieldName
 /**********************************************************
 */
 /// <exception cref="System.IO.IOException"/>
 public override bool nextFieldName(com.fasterxml.jackson.core.SerializableString 
     str)
 {
     // // // Note: most of code below is copied from nextToken()
     _numTypesValid = NR_UNKNOWN;
     if (_currToken == com.fasterxml.jackson.core.JsonToken.FIELD_NAME)
     {
         // can't have name right after name
         _nextAfterName();
         return false;
     }
     if (_tokenIncomplete)
     {
         _skipString();
     }
     int i = _skipWSOrEnd();
     if (i < 0)
     {
         // end-of-input
         close();
         _currToken = null;
         return false;
     }
     _tokenInputTotal = _currInputProcessed + _inputPtr - 1;
     _tokenInputRow = _currInputRow;
     _tokenInputCol = _inputPtr - _currInputRowStart - 1;
     // finally: clear any data retained so far
     _binaryValue = null;
     // Closing scope?
     if (i == INT_RBRACKET)
     {
         if (!_parsingContext.inArray())
         {
             _reportMismatchedEndMarker(i, '}');
         }
         _parsingContext = ((com.fasterxml.jackson.core.json.JsonReadContext)_parsingContext
             .getParent());
         _currToken = com.fasterxml.jackson.core.JsonToken.END_ARRAY;
         return false;
     }
     if (i == INT_RCURLY)
     {
         if (!_parsingContext.inObject())
         {
             _reportMismatchedEndMarker(i, ']');
         }
         _parsingContext = ((com.fasterxml.jackson.core.json.JsonReadContext)_parsingContext
             .getParent());
         _currToken = com.fasterxml.jackson.core.JsonToken.END_OBJECT;
         return false;
     }
     // Nope: do we then expect a comma?
     if (_parsingContext.expectComma())
     {
         if (i != INT_COMMA)
         {
             _reportUnexpectedChar(i, "was expecting comma to separate " + _parsingContext.getTypeDesc
                 () + " entries");
         }
         i = _skipWS();
     }
     if (!_parsingContext.inObject())
     {
         _nextTokenNotInObject(i);
         return false;
     }
     // // // This part differs, name parsing
     if (i == INT_QUOTE)
     {
         // when doing literal match, must consider escaping:
         byte[] nameBytes = str.asQuotedUTF8();
         int len = nameBytes.Length;
         // 22-May-2014, tatu: Actually, let's require 4 more bytes for faster skipping
         //    of colon that follows name
         if ((_inputPtr + len + 4) < _inputEnd)
         {
             // maybe...
             // first check length match by
             int end = _inputPtr + len;
             if (_inputBuffer[end] == INT_QUOTE)
             {
                 int offset = 0;
                 int ptr = _inputPtr;
                 while (true)
                 {
                     if (ptr == end)
                     {
                         // yes, match!
                         _parsingContext.setCurrentName(str.getValue());
                         _isNextTokenNameYes(_skipColonFast(ptr + 1));
                         return true;
                     }
                     if (nameBytes[offset] != _inputBuffer[ptr])
                     {
                         break;
                     }
                     ++offset;
                     ++ptr;
                 }
             }
         }
     }
     return _isNextTokenNameMaybe(i, str);
 }
 /// <exception cref="System.IO.IOException"/>
 public override sealed void writeString(com.fasterxml.jackson.core.SerializableString
     text)
 {
     _verifyValueWrite(WRITE_STRING);
     if (_outputTail >= _outputEnd)
     {
         _flushBuffer();
     }
     _outputBuffer[_outputTail++] = BYTE_QUOTE;
     int len = text.appendQuotedUTF8(_outputBuffer, _outputTail);
     if (len < 0)
     {
         _writeBytes(text.asQuotedUTF8());
     }
     else
     {
         _outputTail += len;
     }
     if (_outputTail >= _outputEnd)
     {
         _flushBuffer();
     }
     _outputBuffer[_outputTail++] = BYTE_QUOTE;
 }
 /// <exception cref="System.IO.IOException"/>
 private void _writeUnq(com.fasterxml.jackson.core.SerializableString name)
 {
     int len = name.appendQuotedUTF8(_outputBuffer, _outputTail);
     if (len < 0)
     {
         _writeBytes(name.asQuotedUTF8());
     }
     else
     {
         _outputTail += len;
     }
 }
 /// <exception cref="System.IO.IOException"/>
 public override void writeFieldName(com.fasterxml.jackson.core.SerializableString
     name)
 {
     if (_cfgPrettyPrinter != null)
     {
         _writePPFieldName(name);
         return;
     }
     int status = _writeContext.writeFieldName(name.getValue());
     if (status == com.fasterxml.jackson.core.json.JsonWriteContext.STATUS_EXPECT_VALUE)
     {
         _reportError("Can not write a field name, expecting a value");
     }
     if (status == com.fasterxml.jackson.core.json.JsonWriteContext.STATUS_OK_AFTER_COMMA)
     {
         if (_outputTail >= _outputEnd)
         {
             _flushBuffer();
         }
         _outputBuffer[_outputTail++] = BYTE_COMMA;
     }
     if (_cfgUnqNames)
     {
         _writeUnq(name);
         return;
     }
     if (_outputTail >= _outputEnd)
     {
         _flushBuffer();
     }
     _outputBuffer[_outputTail++] = BYTE_QUOTE;
     int len = name.appendQuotedUTF8(_outputBuffer, _outputTail);
     if (len < 0)
     {
         // couldn't append, bit longer processing
         _writeBytes(name.asQuotedUTF8());
     }
     else
     {
         _outputTail += len;
     }
     if (_outputTail >= _outputEnd)
     {
         _flushBuffer();
     }
     _outputBuffer[_outputTail++] = BYTE_QUOTE;
 }
 /// <exception cref="System.IO.IOException"/>
 protected internal void _writePPFieldName(com.fasterxml.jackson.core.SerializableString
     name)
 {
     int status = _writeContext.writeFieldName(name.getValue());
     if (status == com.fasterxml.jackson.core.json.JsonWriteContext.STATUS_EXPECT_VALUE)
     {
         _reportError("Can not write a field name, expecting a value");
     }
     if (status == com.fasterxml.jackson.core.json.JsonWriteContext.STATUS_OK_AFTER_COMMA)
     {
         _cfgPrettyPrinter.writeObjectEntrySeparator(this);
     }
     else
     {
         _cfgPrettyPrinter.beforeObjectEntries(this);
     }
     bool addQuotes = !_cfgUnqNames;
     // standard
     if (addQuotes)
     {
         if (_outputTail >= _outputEnd)
         {
             _flushBuffer();
         }
         _outputBuffer[_outputTail++] = BYTE_QUOTE;
     }
     _writeBytes(name.asQuotedUTF8());
     if (addQuotes)
     {
         if (_outputTail >= _outputEnd)
         {
             _flushBuffer();
         }
         _outputBuffer[_outputTail++] = BYTE_QUOTE;
     }
 }