public JsonToken peek() {
    int p = peeked;
    if (p == PEEKED_NONE) {
      p = doPeek();
    }

    return switch (p) {
      case PEEKED_BEGIN_OBJECT -> JsonToken.BEGIN_OBJECT;
      case PEEKED_END_OBJECT -> JsonToken.END_OBJECT;
      case PEEKED_BEGIN_ARRAY -> JsonToken.BEGIN_ARRAY;
      case PEEKED_END_ARRAY -> JsonToken.END_ARRAY;
      case PEEKED_SINGLE_QUOTED_NAME, PEEKED_DOUBLE_QUOTED_NAME, PEEKED_UNQUOTED_NAME -> JsonToken.NAME;
      case PEEKED_TRUE, PEEKED_FALSE -> JsonToken.BOOLEAN;
      case PEEKED_NULL -> JsonToken.NULL;
      case PEEKED_SINGLE_QUOTED, PEEKED_DOUBLE_QUOTED, PEEKED_UNQUOTED, PEEKED_BUFFERED -> JsonToken.STRING;
      case PEEKED_LONG, PEEKED_NUMBER -> JsonToken.NUMBER;
      case PEEKED_EOF -> JsonToken.END_DOCUMENT;
      default -> throw new AssertionError();
    };
  }
public JsonToken peek()