I'm somewhat unsure about the AST structure here. VariadicPlaceholder is not a general expression. Maybe Arg->expr should be Expr|VariadicPlaceholder? Or possibly the call arguments should be an array of Arg|VariadicPlaceholder?