pub fn merge_match_fn<'a, 'b, G, H>(
    allocator: &'a Allocator<'a>,
    expr: CExpr<'b>,
    g: G,
    new_expr: Option<CExpr<'a>>,
    alts: &'b [Alternative<'b>],
    h: H,
    new_alts: Option<&'a [Alternative<'a>]>
) -> Option<CExpr<'a>>
where G: FnOnce(&CExpr<'b>) -> CExpr<'a>, H: FnOnce(&&'b [Alternative<'b>]) -> &'a [Alternative<'a>],