docs: public void unbind(boolean force) {
      if (isStopped.getAndSet(true))
        return;
  
      try {
        connectionManager.closeChannel(socketChannel);
      } catch (IOException e) {
        LoggerUtils.errorAndDebugDetails(logger, "cannot close socket channel. Peer {}", this, e);
      }
  
      this.firePeerDisconnected();
  
      synchronized (requestsLock) {
        this.downloading = myRequestedPieces.size() > 0;
        myRequestedPieces.clear();
      }
  
      this.afterPeerDisconnected();
    }