docs: @GuardedBy("lock")
      protected boolean _contiguousSpaceAvailable(int space_needed) {
          int num_slots_scanned=0;
          int size_of_contiguous_area=0;
  
          if(high-low-1 < space_needed)
              return false;
  
          for(long i=low+1; i < high; i++) {
              num_slots_scanned++;
              int index=index(i);
              if(this.buffer[index] == null) {
                  if(++size_of_contiguous_area >= space_needed)
                      return true;
              }
              else {
                  size_of_contiguous_area=0;
                  // we scanned more than half of the current array and found an occupied slot, so there is no chance of
                  // finding space_needed contiguous free slots as we have less than half of the current array to scan
                  if(num_slots_scanned > space_needed || high-i-1 < space_needed)
                      return false;
              }
          }
          return false;
      }