transformFormalParameterList(tree) {
    let transformed = super.transformFormalParameterList(tree);
    if (hasRestParameter(transformed)) {
      let parametersWithoutRestParam = new FormalParameterList(
          transformed.location,
          transformed.parameters.slice(0, -1));

      let startIndex = transformed.parameters.length - 1;
      let i = createIdentifierToken(this.getTempIdentifier());
      let name = getRestParameterLiteralToken(transformed);
      let loop;
      if (startIndex) {
        // If startIndex is 0 we can generate slightly cleaner code.
        loop = parseStatement `
            for (var ${name} = [], ${i} = ${startIndex};
                 ${i} < arguments.length; ${i}++)
              ${name}[${i} - ${startIndex}] = arguments[${i}];`;
      } else {
        loop = parseStatement `
            for (var ${name} = [], ${i} = 0;
                 ${i} < arguments.length; ${i}++)
              ${name}[${i}] = arguments[${i}];`;
      }
      this.parameterStatements.push(loop);
      return parametersWithoutRestParam;
    }

    return transformed;
  }
Desugars rest parameters.

@see <a href="http://wiki.ecmascript.org/doku.php?id=harmony:rest_parameters">harmony:rest_parameters</a>