pub trait AutomateTrait<T: Clone + Hash + Debug> {
// Required methods
fn get_fsm(&self) -> &FSM;
fn get_start(&self) -> &T;
fn get_starts(&self) -> &T;
fn get_delta(&self) -> &HashMap<Transition<State>, T>;
fn accept(&self, _word: &str) -> bool;
fn to_dfa(&self) -> DFA;
// Provided methods
fn get_states(&self) -> &BTSet<State> { ... }
fn get_alphabet(&self) -> &BTSet<Symbol> { ... }
fn get_ends(&self) -> &BTSet<State> { ... }
}