use crate::delegate::node::GenericNode;
use crate::queued_steps::step::GenericStep;
pub trait AbstractProcessHandler<Context,Step,Node,Criterion> {
fn process_new_step(context : &Context,
parent_state : &GenericNode<Node>,
step_to_process : &GenericStep<Step>,
new_state_id : u32,
node_counter : u32) -> Node;
fn get_criterion(context : &Context,
parent_state : &GenericNode<Node>,
step_to_process : &GenericStep<Step>,
new_state_id : u32,
node_counter : u32) -> Criterion;
fn collect_next_steps(context : &Context,
parent_state_id : u32,
parent_node_kind : &Node) -> (u32,Vec<GenericStep<Step>>);
}