docs: private boolean findNextBucket()
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          while (ivBucketCount < ivCache.getNumBuckets())
          {
              ivBucketIndex = (ivBucketIndex + 1) % ivCache.getNumBuckets();
              Bucket bucket = ivCache.getBucketForKey(ivBucketIndex);
              ivBucketCount++;
  
              if (bucket == null) // d739870
              {
                  // Collect Performance data if debug is enabled.
                  if (isTraceOn && tc.isDebugEnabled())
                  {
                      ++ivBucketSizeStats[0];
                  }
                  continue;
              }
  
              synchronized (bucket)
              {
                  if (!bucket.isEmpty())
                  {
                      ivBucketSize = bucket.size();
  
                      // Make sure the internal copy is big enough to hold
                      // the new bucket, or the copy will fail.
                      if (ivBucket.length < ivBucketSize)
                      {
                          if (isTraceOn && tc.isDebugEnabled())
                              Tr.debug(tc, ivCache.getName() +
                                           ": Expanding internal bucket from " +
                                           ivBucket.length + " to " + (ivBucketSize + 20));
  
                          ivBucket = new Element[ivBucketSize + 20];
                      }
  
                      bucket.toArray(ivBucket); // d133110
                      ivElementIndex = 0;
  
                      // Collect Performance data if debug is enabled.          d119287
                      if (isTraceOn && tc.isDebugEnabled())
                      {
                          if (ivBucketSize > ivMaxBucketSize)
                              ivMaxBucketSize = ivBucketSize;
  
                          // Keep track of how many buckets are each size.       d119287
                          if (ivBucketSize < ivBucketSizeStats.length)
                              ++ivBucketSizeStats[ivBucketSize];
                          else
                              ++ivBucketSizeStats[ivBucketSizeStats.length - 1];
  
                          // Add the number of lookups to find all elements.     d119287
                          for (int j = 1; j <= ivBucketSize; ++j)
                              ivTotalLookups += j;
  
                          if (ivBucketSize > 100)
                              Tr.debug(tc, ivCache.getName() + ": Hash = " + ivBucketIndex +
                                           ", size = " + ivBucketSize);
                      }
  
                      return true;
                  }
                  else
                  {
                      // Collect Performance data if debug is enabled.          d119287
                      if (isTraceOn && tc.isDebugEnabled())
                      {
                          ++ivBucketSizeStats[0];
                      }
                  }
              }
          }
  
          // When the end of the enumerator has been hit, dump out some
          // performance/tuning info if trace is enabled and the enumeration
          // actually enumerated through some elements.
          if (isTraceOn && tc.isDebugEnabled() &&
              ivElementsReturned > 0)
          {
              int pCapacity = (int) ((((float) ivElementsReturned) / ivBucketCount) * 100);
              Tr.debug(tc, "Empty : " + ivCache.getName() + " returned = " +
                           ivElementsReturned + ", " + pCapacity + "% capacity" +
                           " (lookup avg = " + ((float) ivTotalLookups / ivElementsReturned) +
                           ", max = " + ivMaxBucketSize + ")");
  
              // Dump how many buckets were each size.                        d119287
              String bucketStats = "0[" + ivBucketSizeStats[0] + "]";
              for (int i = 1; i < ivBucketSizeStats.length; ++i)
              {
                  if (ivBucketSizeStats[i] > 0)
                  {
                      bucketStats = bucketStats + ", " + i;
                      if (i == ivBucketSizeStats.length - 1)
                          bucketStats = bucketStats + "+";
                      bucketStats = bucketStats + "[" + ivBucketSizeStats[i] + "]";
                  }
              }
              Tr.debug(tc, "Empty : " + ivCache.getName() + " size[buckets] = " + bucketStats);
          }
  
          return false;
      }