function prependStatements(statements, ...statementsToPrepend) {
  if (!statements.length)
    return statementsToPrepend;

  if (!statementsToPrepend.length)
    return statements;

  let transformed  = [];
  let inProlog = true;
  statements.forEach((statement) => {
    if (inProlog && !statement.isDirectivePrologue()) {
      transformed.push(...statementsToPrepend);
      inProlog = false;
    }
    transformed.push(statement);
  });
  if (inProlog) {
    transformed.push(...statementsToPrepend);
  }
  return transformed;
}
Prepends |statements| with the |statementsToPrepend| making sure that any
leading directives, like 'use strict', are kept at the top of the statements.
@param {Array.<ParseTree>} statements
@param {ParseTree} statementsToPrepend
@return {Array.<ParseTree>}