Represents a key/value commit. The value is stored as a byte array, although Commits always know how to
deserialize them into a useful ValueType, using a KeyValueDeserialization.
Underlying object type being committed. Should really be immutable and possess semantic equals
and hashCode methods.
Metadata for this comment.
Serialized value for this commit, or None if this is a tombstone commit.
Deserialized value for this commit.
Deserialized value for this commit. This is an Option (because payloads can be present, or not present) of an
Either (because deserialization can succeed, or fail). If you are uninterested in this distinction, you can use
the simpler "valueOption" method.
Deserialized value for this commit. This waves away the nuance of the "value" method, and represents
missing payloads and failed deserializations both as Options. If you need to be able to distinguish between
those two cases, or if you need access to the actual exception that was thrown, you should use "value".