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>,