pub trait ContextStrategy {
type E: ContextElement;
// Required methods
fn empty_context(&self) -> Rc<Context<Self::E>>;
fn get_empty_context_id(&mut self) -> ContextId;
fn get_context_id(&mut self, context: &Rc<Context<Self::E>>) -> ContextId;
fn get_context_by_id(&self, context_id: ContextId) -> Rc<Context<Self::E>>;
fn new_instance_call_context(
&mut self,
callsite: &Rc<CSCallSite>,
receiver: Option<&Rc<CSPath>>
) -> Option<ContextId>;
fn new_static_call_context(
&mut self,
callsite: &Rc<CSCallSite>
) -> ContextId;
}