pub fn walk_expr_alloc<'a, 'b, V>(
    visitor: &mut V,
    expr: CExpr<'b>
) -> Option<CExpr<'a>>
where V: ?Sized + Visitor<'a, 'b>, V::Producer: Visitor<'a, 'b, Producer = V::Producer>,