set application(plugin) {
    assert(
      this._plugins.size === 0,
      "The application plugin can only be set before every other plugins are loaded",
    );
    assert(
      plugin.application,
      'The application plugin must have the "application" property equals to true',
    );

    this._plugins.set(plugin.name, plugin);
  }
@example
{
  pluginName: {
    authName: <constructor>,
    authname2: <constructor>,
    ...
  },
  pluginName2: {
    ...
  }
}

This structure prevents authenticator names collisions between
multiple auth. plugins