code: public static JsonProperty parseJsonProperty(JsonReader reader, String name)
              throws RepositoryException, IOException {
          JsonToken token = reader.peek();
          JsonProperty property = new JsonProperty();
          property.name = name;
          switch (token) {
              case BOOLEAN:
                  // map boolean values directly if not a string
                  property.type = PropertyType.nameFromValue(PropertyType.BOOLEAN);
                  property.value = reader.nextBoolean();
                  break;
              case NUMBER:
                  // map numver values to LONG directly if not a string
                  property.type = PropertyType.nameFromValue(PropertyType.LONG);
                  property.value = reader.nextLong();
                  break;
              case STRING:
                  // parse the string with an option type hint within
                  parseJsonString(reader, property);
                  break;
              case NULL:
                  reader.nextNull();
                  break;
          }
          return property;
      }
docs: Parses a single property of the first element of an array and returns the result as a JSON POJO object.
  
  @param reader the reader with the JSON stream
  @param name   the already parsed name of the property
  @return a new JsonProperty object with the name, type, and value set
  @throws RepositoryException
  @throws IOException