fn missing_counterpart<N>( ctx: &AstCtx<'_>, node: &N, type_name: &str, has: &str, needs: &str, ) -> Violationwhere N: AstNode,