code: private static Object readValue(JsonReader reader) throws IOException {
      JsonToken token = reader.peek();
      switch (token) {
        case BEGIN_OBJECT:
          return readerToMap(reader);
        case BEGIN_ARRAY:
          return readerToList(reader);
        case BOOLEAN:
          return reader.nextBoolean();
        case NULL:
          reader.nextNull(); // consume the null token
          return null;
        case NUMBER:
          return reader.nextDouble();
        case STRING:
          return reader.nextString();
        default:
          throw new IllegalStateException("Invalid token " + token);
      }
    }
docs: Reads the next value in the {@link JsonReader}.