src/libs/Module.js
function startSingleModule(oWrapper, sModuleId, sIdInstance, oData, bSingle) {
  const oModules = getModules();
  var oModule;
  oModule = oModules[sModuleId];
  if ( (bSingle && isModuleStarted(sModuleId)) || isModuleStarted(sModuleId, sIdInstance)) {
    oWrapper.stop(sModuleId, sIdInstance);
  }
  if (!isTypeOf(oModule, sNotDefined)) {
    createInstance(sModuleId, undefined, function (oInstance) {
      oModule.instances[sIdInstance] = oInstance;
      oInstance.__instance_id__ = sIdInstance;

      beforeInit(oInstance, oData, bSingle);

      if (!isTypeOf(oData, sNotDefined)) {
        oInstance.init(oData);
      } else {
        oInstance.init();
      }
    });
  } else {
    const ErrorHandler = errorHandler();
    ErrorHandler.error(new Error(), fpThrowErrorModuleNotRegistered(sModuleId));
  }
}
function startSingleModule(oWrapper, sModuleId, sIdInstance, oData, bSingle) {
  const oModules = getModules();
  var oModule;
  oModule = oModules[sModuleId];
  if ( (bSingle && isModuleStarted(sModuleId)) || isModuleStarted(sModuleId, sIdInstance)) {
    oWrapper.stop(sModuleId, sIdInstance);
  }
  if (!isTypeOf(oModule, sNotDefined)) {
    createInstance(sModuleId, undefined, function (oInstance) {
      oModule.instances[sIdInstance] = oInstance;
      oInstance.__instance_id__ = sIdInstance;

      beforeInit(oInstance, oData, bSingle);

      if (!isTypeOf(oData, sNotDefined)) {
        oInstance.init(oData);
      } else {
        oInstance.init();
      }
    });
  } else {
    const ErrorHandler = errorHandler();
    ErrorHandler.error(new Error(), fpThrowErrorModuleNotRegistered(sModuleId));
  }
}
startSingleModule is the method that will initialize the module.
When start is called the module instance will be created and the init method is called.
If bSingle is true and the module is started the module will be stopped before instance it again.
This avoid execute the same listeners more than one time.
@param {Object} oWrapper
@param {String} sModuleId
@param {String} sIdInstance
@param {Object} oData
@param {Boolean} bSingle
@private