docs: private String nextQuotedValue(ByteString runTerminator) throws IOException {
      StringBuilder builder = null;
      while (true) {
        long index = source.indexOfElement(runTerminator);
        if (index == -1L) throw syntaxError("Unterminated string");
  
        // If we've got an escape character, we're going to need a string builder.
        if (buffer.getByte(index) == '\\') {
          if (builder == null) builder = new StringBuilder();
          builder.append(buffer.readUtf8(index));
          buffer.readByte(); // '\'
          builder.append(readEscapeCharacter());
          continue;
        }
  
        // If it isn't the escape character, it's the quote. Return the string.
        if (builder == null) {
          String result = buffer.readUtf8(index);
          buffer.readByte(); // Consume the quote character.
          return result;
        } else {
          builder.append(buffer.readUtf8(index));
          buffer.readByte(); // Consume the quote character.
          return builder.toString();
        }
      }
    }