docs: @Override
      public int size() {
          /*
           * It is possible for a thread to be interrupted or reschedule between the read of the producer and
           * consumer indices, therefore protection is required to ensure size is within valid range. In the
           * event of concurrent polls/offers to this method the size is OVER estimated as we read consumer
           * index BEFORE the producer index.
           */
          long afterCIndex = lvConsumerIndex();
          while (true) {
              final long beforeCIndex = afterCIndex;
              final long currentProducerIndex = lvProducerIndex();
              afterCIndex = lvConsumerIndex();
              if (beforeCIndex == afterCIndex) {
                  return (int) (currentProducerIndex - afterCIndex);
              }
          }
      }