code: public void bind(String address, int port) {
          Objects.requireNonNull(address);
  
          if (port < 0 || port > 65535) {
              throw new IllegalArgumentException("The port must be between 0 and 65535!");
          }
  
          try {
              channel.bind(new InetSocketAddress(address, port));
              channel.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() {
                  @Override
                  public void completed(AsynchronousSocketChannel channel, Void attachment) {
                      var server = Server.this;
                      var client = new Client(bufferSize, channel, server);
                      connectedClients.add(client);
                      connectListeners.forEach(consumer -> consumer.accept(client));
                      server.channel.accept(null, this);
                      channel.read(client.buffer, client, Client.Listener.SERVER_INSTANCE);
                  }
  
                  @Override
                  public void failed(Throwable t, Void attachment) {
  
                  }
              });
  
              System.out.printf("Successfully bound to %s:%d!\n", address, port);
          } catch (AlreadyBoundException e) {
              throw new IllegalStateException("This server is already bound:", e);
          } catch (IOException e) {
              throw new IllegalStateException("Unable to bind the server:", e);
          }
      }
docs: Attempts to bind the {@link Server} to a specific {@code address} and {@code port}.
  
  @param address The IP address to bind to.
  @param port    The port to bind to {@code 0 <= port <= 65535}.
  @throws IllegalArgumentException If {@code port} is less than 0 or greater than 65535.
  @throws AlreadyBoundException    If a server is already running on any address/port.
  @throws RuntimeException         If the server is unable to be bound to a specific address or port.