code: @SuppressWarnings("unchecked")
      public static <T> T convertValue(JsonNode node, Class<T> clazz) {
          if (node instanceof POJONode) {
              return convertValue(DPathUtils.extractValue((POJONode) node), clazz);
          }
          if (clazz == null) {
              throw new NullPointerException("Class parameter is null!");
          }
          if (node == null || node instanceof NullNode || node instanceof MissingNode) {
              return null;
          }
          if (node instanceof POJONode) {
              return convertValue(DPathUtils.extractValue((POJONode) node), clazz);
          }
          if (Number.class.isAssignableFrom(clazz) || byte.class == clazz || short.class == clazz
                  || int.class == clazz || long.class == clazz || float.class == clazz
                  || double.class == clazz) {
              return convertNumber(node, clazz);
          }
          if (clazz == Boolean.class || clazz == boolean.class) {
              return (T) convertBoolean(node);
          }
          if (clazz == Character.class || clazz == char.class) {
              return (T) convertChar(node);
          }
          if (Date.class.isAssignableFrom(clazz)) {
              return (T) convertDate(node);
          }
          if (Object[].class.isAssignableFrom(clazz) || List.class.isAssignableFrom(clazz)) {
              return (T) convertArrayOrList(node);
          }
          if (clazz.isAssignableFrom(node.getClass())) {
              return (T) node;
          }
          if (clazz == String.class) {
              return (T) (node.isTextual() ? node.asText() : node.toString());
          }
          throw new IllegalArgumentException(
                  "Cannot convert an object of type [" + node.getClass() + "] to [" + clazz + "]!");
      }
docs: Convert a {@link JsonNode} to a specified value type.
  
  @param node
  @param clazz
  @return
  @since 0.6.2