code: public ShardManager build() throws LoginException, IllegalArgumentException
      {
          final DefaultShardManager manager = new DefaultShardManager(
                  this.shardsTotal, this.shards, this.sessionController,
                  this.listeners, this.listenerProviders, this.token, this.eventManagerProvider,
                  this.audioSendFactory, this.gameProvider, this.statusProvider,
                  this.httpClientBuilder, this.httpClient, this.rateLimitPoolProvider, this.gatewayPoolProvider,
                  this.callbackPoolProvider, this.wsFactory, this.threadFactory,
                  this.maxReconnectDelay, this.corePoolSize, this.enableVoice, this.enableShutdownHook, this.enableBulkDeleteSplitting,
                  this.autoReconnect, this.idleProvider, this.retryOnTimeout, this.useShutdownNow, this.enableContext,
                  this.contextProvider, this.cacheFlags, this.enableCompression);
  
          manager.login();
  
          return manager;
      }
docs: Builds a new {@link net.dv8tion.jda.bot.sharding.ShardManager ShardManager} instance and uses the provided token to start the login process.
  <br>The login process runs in a different thread, so while this will return immediately, {@link net.dv8tion.jda.bot.sharding.ShardManager ShardManager} has not
  finished loading, thus many {@link net.dv8tion.jda.bot.sharding.ShardManager ShardManager} methods have the chance to return incorrect information.
  <br>The main use of this method is to start the JDA connect process and do other things in parallel while startup is
  being performed like database connection or local resource loading.
  
  <p>Note that this method is async and as such will <b>not</b> block until all shards are started.
  
  @throws  LoginException
  If the provided token is invalid.
  @throws  IllegalArgumentException
  If the provided token is empty or null.
  
  @return A {@link net.dv8tion.jda.bot.sharding.ShardManager ShardManager} instance that has started the login process. It is unknown as
  to whether or not loading has finished when this returns.