@NonNull
    public Backup clear() {
        final Object data = callback.beforeReplay();

        final HashMap<Transmittable<Object, Object>, Object> transmit2Value = newHashMap(registeredTransmittableSet.size());
        for (Transmittable<Object, Object> transmittable : registeredTransmittableSet) {
            try {
                transmit2Value.put(transmittable, transmittable.clear());
            } catch (Throwable t) {
                propagateIfFatal(t);
                if (logger.isLoggable(Level.WARNING)) {
                    logger.log(Level.WARNING, "exception when clear for transmittable " + transmittable +
                            "(class " + transmittable.getClass().getName() + "), just ignored; cause: " + t, t);
                }
            }
        }

        final Object afterData = callback.afterReplay(data);
        return new Snapshot(transmit2Value, afterData);
    }
Clear all values, and return the backup values before clear.
<p>
Semantically, the code {@code `Object backup = clear();`} is same as {@code `Object backup = replay(EMPTY_CAPTURE);`}.
<p>
The reason for providing this method is:

<ol>
<li>lead to more readable code</li>
<li>need not provide the constant {@code EMPTY_CAPTURE}.</li>
</ol>

@return the backup values before clear
@see #replay(Capture)
ttl-core/src/main/java/com/alibaba/crr/composite/CompositeTransmittable.java