pub trait Solve: Dance {
// Required methods
fn enter_level(&mut self, i: Link, l: Count, xl: Link);
fn prepare_to_branch(&mut self, i: Link, l: Count, xl: Link);
fn try_item(&mut self, i: Link, l: Count, xl: Link) -> bool;
fn try_again(&mut self, i: Link, l: Count, xl: &mut Link) -> bool;
fn restore_item(&mut self, i: Link, l: Count, xl: Link);
}