@NonNull
    public Backup replay(@NonNull Capture captured) {
        final Object data = callback.beforeReplay();

        final Snapshot capturedSnapshot = (Snapshot) captured;
        final HashMap<Transmittable<Object, Object>, Object> transmit2Value = newHashMap(capturedSnapshot.transmit2Value.size());
        for (Map.Entry<Transmittable<Object, Object>, Object> entry : capturedSnapshot.transmit2Value.entrySet()) {
            Transmittable<Object, Object> transmittable = entry.getKey();
            try {
                Object transmitCaptured = entry.getValue();
                transmit2Value.put(transmittable, transmittable.replay(transmitCaptured));
            } catch (Throwable t) {
                propagateIfFatal(t);
                if (logger.isLoggable(Level.WARNING)) {
                    logger.log(Level.WARNING, "exception when replay for transmittable " + transmittable +
                            "(class " + transmittable.getClass().getName() + "), just ignored; cause: " + t, t);
                }
            }
        }

        final Object afterData = callback.afterReplay(data);
        return new Snapshot(transmit2Value, afterData);
    }
Replay the captured values from {@link #capture()},
and return the backup values before replay.

@param captured captured values {@link #capture()}
@return the backup values before replay
@see #capture()
ttl-core/src/main/java/com/alibaba/crr/composite/CompositeTransmittable.java