code: private void visitArrayLitOrCallWithSpread(Node spreadParent) {
      if (spreadParent.isArrayLit()) {
        visitArrayLitContainingSpread(spreadParent);
      } else if (spreadParent.isCall()) {
        visitCallContainingSpread(spreadParent);
      } else {
        checkArgument(spreadParent.isNew(), spreadParent);
        visitNewWithSpread(spreadParent);
      }
    }
docs: Processes array literals or calls to eliminate spreads.
  
  <p>Examples:
  
  <ul>
  <li>[1, 2, ...x, 4, 5] => [].concat([1, 2], $jscomp.arrayFromIterable(x), [4, 5])
  <li>f(1, ...arr) => f.apply(null, [1].concat($jscomp.arrayFromIterable(arr)))
  <li>new F(...args) => new Function.prototype.bind.apply(F,
  [null].concat($jscomp.arrayFromIterable(args)))
  </ul>