trait ChainRuleExt {
    // Required methods
    fn would_apply(
        &self,
        ctx: &WouldApplyContext<'_>,
        match_func: &(dyn Fn(GlyphId, u16) -> bool + '_),
    ) -> bool;
    fn apply(
        &self,
        ctx: &mut hb_ot_apply_context_t<'_, '_>,
        match_funcs: [&(dyn Fn(GlyphId, u16) -> bool + '_); 3],
    ) -> Option<()>;
}