Reliable log is used to store state in case of system crash or reboot. A `ReliableLog` class writes serialized objects to a log file, where the objects represent change in state that must be recorded. After each object is logged, its data is forced to the disk. You can create snapshots that record the current state to disk, creating a new starting point for logging, and making previously logged changes obsolete. Such snapshots allow you to compress the log, making recovery more efficient in cases where the state is modified, not simply added to.