docs: public static Object decodeObjectContent(Object content, MediaType contentMediaType) {
        try {
           if (content == null) return null;
           if (contentMediaType == null) {
              throw new NullPointerException("contentMediaType cannot be null!");
           }
           String strContent;
           String type = contentMediaType.getClassType();
           if (type == null) return content;
  
           if (type.equals("ByteArray")) {
              if (content instanceof byte[]) return content;
              if (content instanceof String) return hexToBytes(content.toString());
              throw new EncodingException("Cannot read ByteArray!");
           }
  
           if (content instanceof byte[]) {
              strContent = new String((byte[]) content, UTF_8);
           } else {
              strContent = content.toString();
           }
  
           Class<?> destinationType = Class.forName(type);
  
           if (destinationType == String.class) return content;
           if (destinationType == Boolean.class) return Boolean.parseBoolean(strContent);
           if (destinationType == Short.class) return Short.parseShort(strContent);
           if (destinationType == Byte.class) return Byte.parseByte(strContent);
           if (destinationType == Integer.class) return Integer.parseInt(strContent);
           if (destinationType == Long.class) return Long.parseLong(strContent);
           if (destinationType == Float.class) return Float.parseFloat(strContent);
           if (destinationType == Double.class) return Double.parseDouble(strContent);
           return content;
        }