code: @SuppressWarnings("unchecked")
      @Override
      public CacheEntry fromBytes(byte[] data) throws DeserializationException {
          ClassLoader cl = Thread.currentThread().getContextClassLoader();
          Map<String, Object> dataMap = SerializationUtils.fromByteArrayFst(data, Map.class, cl);
  
          this.key = DPathUtils.getValue(dataMap, "k", String.class);
  
          Long tAccess = DPathUtils.getValue(dataMap, "tac", Long.class);
          this.lastAccessTimestampMs = tAccess != null ? tAccess.longValue()
                  : System.currentTimeMillis();
  
          Long tCreate = DPathUtils.getValue(dataMap, "tcr", Long.class);
          this.creationTimestampMs = tCreate != null ? tCreate.longValue()
                  : System.currentTimeMillis();
  
          Long eAccess = DPathUtils.getValue(dataMap, "eac", Long.class);
          this.expireAfterAccess = eAccess != null ? eAccess.longValue() : -1;
  
          Long eWrite = DPathUtils.getValue(dataMap, "ewr", Long.class);
          this.expireAfterWrite = eWrite != null ? eWrite.longValue() : -1;
  
          String clazzName = DPathUtils.getValue(dataMap, "_c_", String.class);
          if (!StringUtils.isBlank(clazzName)) {
              try {
                  byte[] valueData = DPathUtils.getValue(dataMap, "v", byte[].class);
                  Class<?> clazz = Class.forName(clazzName, true, cl);
                  this.value = SerializationUtils.fromByteArray(valueData, clazz, cl);
              } catch (ClassNotFoundException e) {
                  throw new DeserializationException(e);
              }
          }
  
          return this;
      }
docs: {@inheritDoc}
  
  @since 0.5.0