pub trait Hook {
// Required method
fn analyze(&self, cx: &Context, file: &SourceFile) -> Result<()>;
// Provided method
fn hover(
&self,
cx: &Context,
file: &SourceFile,
pos: Position,
) -> Option<HoverResponse> { ... }
}