async function executeActions(self, actions, scope, basePath = null, { throwUnknownError = false } = {}) {
    // first array level should be executed in serie
    await Promise.mapSeries(actions, async (parallelActions, columnIndex) => {
      // then, second level is executed in parallel
      await Promise.map(parallelActions, async (action, rowIndex) => {
        const path = `${basePath ? `${basePath}.` : ''}${columnIndex}.${rowIndex}`;
        await executeAction(self, action, scope, path, { throwUnknownError });
      });
    });
    return null;
  }
@description Execute an array of array of action.
@param {object} self - Reference to the SceneManager.
@param {object} actions - An array of array of actions from the db.
@param {object} scope - The scope passed to all actions.
@param {string} [basePath] - If this group of actions is executed inside a branch.
@param {object} [options] - Additional options.
@param {boolean} [options.throwUnknownError=false] - Throw an error if an unknown error happens.
@returns {Promise} Resolve if the action was executed with success.
@example
executeActions(this, actions, {});