code: private void findAndCacheMinimum(int firstBucket) {
          if (currentMin == null) {
              // find first non-empty bucket
              int currentMinBucket = EMPTY;
              for (int i = firstBucket; i < this.buckets.length; i++) {
                  if (buckets[i] != null) {
                      currentMinBucket = i;
                      break;
                  }
              }
              // find new minimum and cache it
              if (currentMinBucket >= 0) {
                  Node val = buckets[currentMinBucket];
                  while (val != null) {
                      if (currentMin == null || compare(val.key, currentMin.key) < 0) {
                          currentMin = val;
                      }
                      val = val.next;
                  }
              }
          }
      }
docs: Helper method for finding and caching the minimum. Assumes that the heap
  contains at least one element.
  
  @param firstBucket
  start looking for elements from this bucket