pub trait Lock {
// Required methods
fn unlock(&self) -> Result<(), Error>;
fn id(&self) -> String;
fn path(&self) -> &Bytes;
fn formatted_timestamp(&self) -> String;
fn ownername(&self) -> &str;
fn as_lock_spec(&self, owner_id: bool) -> Result<Vec<Bytes>, Error>;
// Provided method
fn as_arguments(&self) -> Vec<Bytes> { ... }
}