pub trait Matching {
// Required methods
fn forward(&self, pattern_indices: &mut Vec<usize>);
fn reverse(&self, pattern_indices: &mut Vec<usize>);
fn char_equal(&self, a: &char, b: &char) -> bool;
fn byte_equal(&self, a: &u8, b: &u8) -> bool;
}