code: @SuppressWarnings("unchecked")
      public static <T extends BaseBo> T fromBytes(byte[] bytes, Class<T> clazz,
              ClassLoader classLoader) {
          if (bytes == null || clazz == null) {
              return null;
          }
          try {
              Map<String, Object> data = SerializationUtils.fromByteArray(bytes, Map.class);
              String boClassName = DPathUtils.getValue(data, FIELD_CLASSNAME, String.class);
              T bo = createObject(boClassName, classLoader, clazz);
              if (bo != null) {
                  bo.fromByteArray(DPathUtils.getValue(data, FIELD_BODATA, byte[].class));
                  return bo;
              } else {
                  return null;
              }
          } catch (Exception e) {
              throw e instanceof DeserializationException ? (DeserializationException) e
                      : new DeserializationException(e);
          }
      }
docs: De-serialize a BO from byte array.
  
  @param bytes
  the byte array obtained from {@link #toBytes(BaseBo)}
  @param clazz
  @param classLoader
  @return
  @since 0.6.0.3