Functions that accept random numbers of arguments use a rest argument (``++... argname++``). This allows you to pass the function each relevant parameter individually. At runtime, those parameters are automatically wrapped in an array. If you pass an array to such a function, it will automatically be re-wrapped in another array, and this double-layering won't be expected by the called function. To avoid that double-layering, use the spread operator (``++...++``arrayToBeExpanded) in the call to expand the array.
This applies both to manually created arrays, and to arguments that were accepted as rest parameters.
\[~elena.vilchik] a little text on what "spread" is and why it's necessary (when the argument you're passing is apparently already an array) would be nice.