wrapModule(statements) {
    let seed = this.moduleName || 'anon_' + ++anonInlineModules;
    let idName = this.getTempVarNameForModuleName(seed);

    if (this.isRootModule) {
      // removes the return statement from the output
      statements.pop();
      return statements;
    }

    let body = createFunctionBody(statements);
    let moduleExpression = createImmediatelyInvokedFunctionExpression(body);
    return [createVariableStatement(CONST, idName, moduleExpression)];
  }
Wraps a module in to an IIFE closure and returns the module as a `const` unless it's a root module
@param statements
@returns {Array} statements