code: private void shrink ()
      {
          T[] items = newArray(_size / 2);
  
          if (_start > _end) {
              // the data wraps around
              System.arraycopy(_items, _start, items, 0, _size - _start);
              System.arraycopy(_items, 0, items, _size - _start, _end + 1);
  
          } else {
              // the data does not wrap around
              System.arraycopy(_items, _start, items, 0, _end - _start+1);
          }
  
          _size = _size / 2;
          _start = 0;
          _end = _count;
          _items = items;
      }
docs: shrink by half