code: private void parseQuerySignature(boolean lastChunk) {
          ByteBufProcessor processor = null;
          //signature can be any valid JSON item, which get tricky to detect
          //let's try to find out what's the boundary character
          int openPos = responseContent.forEachByte(new WhitespaceSkipper()) - responseContent.readerIndex();
          if (openPos < 0) {
              //only whitespace left in the buffer, need more data
              return;
          }
          char openChar = (char) responseContent.getByte(responseContent.readerIndex() + openPos);
          if (openChar == '{') {
              processor = new ClosingPositionBufProcessor('{', '}', true);
          } else if (openChar == '[') {
              processor = new ClosingPositionBufProcessor('[', ']', true);
          } else if (openChar == '"') {
              processor = new StringClosingPositionBufProcessor();
          } //else this should be a scalar, skip processor
  
          int closePos;
          if (processor != null) {
              closePos = responseContent.forEachByte(processor) - responseContent.readerIndex();
          } else {
              closePos = findNextChar(responseContent, ',') - 1;
          }
          if (closePos > 0) {
              responseContent.skipBytes(openPos);
              int length = closePos - openPos + 1;
              ByteBuf signature = responseContent.readSlice(length);
              querySignatureObservable.onNext(signature.copy());
          } else {
              //wait for more data
              return;
          }
          //note: the signature section could be absent, so we'll make sure to complete the observable
          // when receiving status since this is in every well-formed response.
          sectionDone();
          queryParsingState = transitionToNextToken(lastChunk);
      }
docs: Parse the signature section in the N1QL response.