docs: @Override
      public boolean offer(final T data) {
  
          if (!open) {
              throw new ClosedQueueException();
          }
  
          try {
              final boolean result = producerWait.offer(() -> this.queue.offer((T) nullSafe(data), this.offerTimeout, this.offerTimeUnit));
  
              if (sizeSignal != null)
                  this.sizeSignal.set(queue.size());
              return result;
          } catch (final InterruptedException e) {
              Thread.currentThread()
                    .interrupt();
              throw ExceptionSoftener.throwSoftenedException(e);
          }
  
      }