docs: private String nextQuotedValue(char quote) throws IOException {
      // Like nextNonWhitespace, this uses locals 'p' and 'l' to save inner-loop field access.
      char[] buffer = this.buffer;
      StringBuilder builder = null;
      while (true) {
        int p = pos;
        int l = limit;
        /* the index of the first character not yet appended to the builder. */
        int start = p;
        while (p < l) {
          int c = buffer[p++];
  
          if (c == quote) {
            pos = p;
            int len = p - start - 1;
            if (builder == null) {
              return new String(buffer, start, len);
            } else {
              builder.append(buffer, start, len);
              return builder.toString();
            }
          } else if (c == '\\') {
            pos = p;
            int len = p - start - 1;
            if (builder == null) {
              int estimatedLength = (len + 1) * 2;
              builder = new StringBuilder(Math.max(estimatedLength, 16));
            }
            builder.append(buffer, start, len);
            builder.append(readEscapeCharacter());
            p = pos;
            l = limit;
            start = p;
          } else if (c == '\n') {
            lineNumber++;
            lineStart = p;
          }
        }
  
        if (builder == null) {
          int estimatedLength = (p - start) * 2;
          builder = new StringBuilder(Math.max(estimatedLength, 16));
        }
        builder.append(buffer, start, p - start);
        pos = p;
        if (!fillBuffer(1)) {
          throw syntaxError("Unterminated string");
        }
      }
    }