private void removeStream(IStream stream) {
    if (stream.isUnidirectional()) stream.getAssociatedStream().disassociate(stream);

    IStream removed = streams.remove(stream.getId());
    if (removed != null) {
      assert removed == stream;

      if (streamIds.get() % 2 == stream.getId() % 2) localStreamCount.decrementAndGet();

      LOG.debug("Removed {}", stream);
      notifyStreamClosed(stream);
    }
  }