/**
   * Deserialize object from byte array using marshaller.
   *
   * @param bytes Bytes to deserialize.
   * @param <X> Result object type.
   * @return Deserialized object.
   * @throws GridException If failed.
   */
  protected <X> X fromBytes(byte[] bytes) throws GridException {
    if (bytes == null || bytes.length == 0) return null;

    return marsh.unmarshal(bytes, getClass().getClassLoader());
  }
 /**
  * Serialize object to byte array using marshaller.
  *
  * @param obj Object to convert to byte array.
  * @return Byte array.
  * @throws GridException If failed to convert.
  */
 protected byte[] toBytes(Object obj) throws GridException {
   return marsh.marshal(obj);
 }