docs: @Override
      public boolean isEmpty() {
          try {
              // we use this lock to make
              smartLock.readLock().acquire();
  
              if (currentConsumers.get() > 0)
                  synchronize(currentConsumers.get());
  
              return super.isEmpty();
          } catch (InterruptedException e) {
              throw new RuntimeException(e);
          } finally {
              smartLock.readLock().release();
          }
      }