pub trait HistoryProvider {
// Required methods
fn undo(&mut self, ctx: &mut CommandContext<'_>);
fn redo(&mut self, ctx: &mut CommandContext<'_>);
fn push(&mut self, command: Box<dyn Command>, ctx: &mut CommandContext<'_>);
fn clear(&mut self);
}