void ExpandLastArg(List<Argument> arguments, DynamicMetaObject[] args, ref BindingRestrictions restrictions) { if (args.Length == 0) return; var lastArg = args.Last(); if (lastArg.LimitType != typeof(Varargs)) return; // TODO: Use custom restriction (checks length and types) and add arguments by indexing into Varargs value restrictions = restrictions.Merge(RuntimeHelpers.MergeInstanceRestrictions(lastArg)); var varargs = (Varargs)lastArg.Value; arguments.RemoveAt(arguments.Count - 1); arguments.AddRange(varargs.Select(value => new Argument(Expr.Constant(value), value.GetType()))); }