docs: @SuppressWarnings("fallthrough")
    private String nextUnquotedValue() throws IOException {
      StringBuilder builder = null;
      int i = 0;
  
      findNonLiteralCharacter:
      while (true) {
        for (; pos + i < limit; i++) {
          switch (buffer[pos + i]) {
          case '/':
          case '\\':
          case ';':
          case '#':
          case '=':
            checkLenient(); // fall-through
          case '{':
          case '}':
          case '[':
          case ']':
          case ':':
          case ',':
          case ' ':
          case '\t':
          case '\f':
          case '\r':
          case '\n':
            break findNonLiteralCharacter;
          }
        }
  
        // Attempt to load the entire literal into the buffer at once.
        if (i < buffer.length) {
          if (fillBuffer(i + 1)) {
            continue;
          } else {
            break;
          }
        }
  
        // use a StringBuilder when the value is too long. This is too long to be a number!
        if (builder == null) {
          builder = new StringBuilder();
        }
        builder.append(buffer, pos, i);
        pos += i;
        i = 0;
        if (!fillBuffer(1)) {
          break;
        }
      }
  
      String result;
      if (builder == null) {
        result = new String(buffer, pos, i);
      } else {
        builder.append(buffer, pos, i);
        result = builder.toString();
      }
      pos += i;
      return result;
    }