code: public DefaultShardManagerBuilder setEventManagerProvider(final IntFunction<? extends IEventManager> eventManagerProvider)
      {
          Checks.notNull(eventManagerProvider, "eventManagerProvider");
          this.eventManagerProvider = eventManagerProvider;
          return this;
      }
docs: Sets a provider to change the internally used EventManager.
  <br>There are 2 provided Implementations:
  <ul>
  <li>{@link net.dv8tion.jda.core.hooks.InterfacedEventManager InterfacedEventManager} which uses the Interface
  {@link net.dv8tion.jda.core.hooks.EventListener EventListener} (tip: use the {@link net.dv8tion.jda.core.hooks.ListenerAdapter ListenerAdapter}).
  <br>This is the default EventManager.</li>
  
  <li>{@link net.dv8tion.jda.core.hooks.AnnotatedEventManager AnnotatedEventManager} which uses the Annotation
  {@link net.dv8tion.jda.core.hooks.SubscribeEvent @SubscribeEvent} to mark the methods that listen for events.</li>
  </ul>
  <br>You can also create your own EventManager (See {@link net.dv8tion.jda.core.hooks.IEventManager}).
  
  @param  eventManagerProvider
  A supplier for the new {@link net.dv8tion.jda.core.hooks.IEventManager} to use.
  
  @return The DefaultShardManagerBuilder instance. Useful for chaining.