code: private final T extract() {
          T old = buffer[takeIndex];
          buffer[takeIndex] = null;
  
          if (++takeIndex >= buffer.length)
              takeIndex = 0;
  
          return old;
      }
docs: Removes an object from the buffer. Note that
  since there is no synchronization, it is assumed
  that this is done outside the scope of this call.