pub trait Observer {
// Provided methods
fn on_trace(&self, _msg: &str) { ... }
fn on_before_method_resolution(
&self,
_ctx: &TypeCheckContext<'_>,
_method_name: &TypeBinding<MethodName>,
_args_types: &[TypeId],
) { ... }
fn on_after_method_resolution(
&self,
_ctx: &TypeCheckContext<'_>,
_method_name: &TypeBinding<MethodName>,
_args_types: &[TypeId],
_new_ref: DeclRefFunction,
_new_type_id: TypeId,
) { ... }
}