pub trait SnapshotDbWriteableTrait: KeyValueDbTypes {
    type SnapshotDbBorrowMutType: SnapshotMptTraitRw;
    // Required methods
    fn start_transaction(&mut self) -> Result<()>;
    fn commit_transaction(&mut self) -> Result<()>;
    fn put_kv(
        &mut self,
        key: &[u8],
        value: &<Self::ValueType as DbValueType>::Type,
    ) -> Result<Option<Option<Self::ValueType>>>;
    fn open_snapshot_mpt_owned(
        &mut self,
    ) -> Result<Self::SnapshotDbBorrowMutType>;
}