protected virtual void ExpandInvocation(MethodInvocationExpression node, IParameter[] parameters)
{
if (node.Arguments.Count > 0 && AstUtil.IsExplodeExpression(node.Arguments[-1]))
{
// explode the arguments
node.Arguments.ReplaceAt(-1, ((UnaryExpression)node.Arguments[-1]).Operand);
return;
}
int lastParameterIndex = parameters.Length-1;
IType varArgType = parameters[lastParameterIndex].Type;
ExpressionCollection varArgs = node.Arguments.PopRange(lastParameterIndex);
node.Arguments.Add(CodeBuilder.CreateArray(varArgType, varArgs));
}