pub trait BasicFile<D, H>: Send + Sync {
// Required methods
fn get_path(&self) -> &PathBuf;
fn get_path_str(&self) -> String;
fn is_dirty(&self) -> bool;
fn set_dirty(&mut self, dirty: bool);
fn to_string(&self) -> String;
fn save(&mut self) -> Result<(), Box<dyn Error>>;
fn get_raw(&mut self) -> &mut D;
fn handle_modify(&mut self, history: &H) -> Result<(), Box<dyn Error>>;
}