docs: public Result readHashcodeByRange(int index, int length, boolean debug, boolean useValue) // LI4337-17
      {
          final String methodName = "readHashcodeByRange()";
          Result result = getFromResultPool();
          result.data = null;
          HashtableOnDisk cache_instance = object_cache;;
          try {
              rwLock.readLock().lock();
              if (cache_instance != null) {
                  if (index < 0) {
                      index = cache_instance.getPreviousRangeIndex();
                  } else if (index > 0) {
                      index = cache_instance.getNextRangeIndex();
                  } else {
                      cache_instance.initRangeIndex();
                  }
                  if (length == -1) {
                      length = cache_instance.size();
                  }
                  if (length <= 0) {
                      return result;
                  }
                  if (tc.isDebugEnabled())
                      Tr.debug(tc, methodName, "cacheName=" + this.cacheName + " before range index=" + index + " length=" + length);
                  HashcodeReadCallback hrcb = new HashcodeReadCallback(invalidationBuffer, debug, useValue);
                  int rangeIndex = cache_instance.iterateKeys(hrcb, index, length);
                  cache_instance.addRangeIndex(rangeIndex);
                  if (hrcb.isValidHashCode == true) {
                      result.totalHashcode = hrcb.totalHashcode;
                      result.data = hrcb.list;
                      result.dataSize = hrcb.count;
                      if ((hrcb.count + hrcb.expiredCount) == 100) {
                          result.bMore = true;
                      } else {
                          result.bMore = false;
                      }
                  } else {
                      result.returnCode = HTODDynacache.NO_HASHCODE_OLD_FORMAT;
                  }
              }
          } catch (FileManagerException ex) {
              this.diskCacheException = ex;
              result.diskException = ex;
              result.returnCode = DISK_EXCEPTION;
          } catch (HashtableOnDiskException ex) {
              this.diskCacheException = ex;
              result.diskException = ex;
              result.returnCode = DISK_EXCEPTION;
          } catch (IOException ex) {
              this.diskCacheException = ex;
              result.diskException = ex;
              result.returnCode = DISK_EXCEPTION;
          } catch (Exception ex) {
              result.returnCode = OTHER_EXCEPTION;
              result.diskException = ex;
          } finally {
              rwLock.readLock().unlock();
              if (result.returnCode != NO_EXCEPTION) {
                  if (tc.isDebugEnabled())
                      Tr.debug(tc, methodName, "cacheName=" + this.cacheName + "\n Exception: " + ExceptionUtility.getStackTrace(result.diskException));
              }
              if (result.returnCode == DISK_EXCEPTION || result.returnCode == OTHER_EXCEPTION) {
                  com.ibm.ws.ffdc.FFDCFilter.processException(result.diskException, "com.ibm.ws.cache.HTODDynacache.readByRange", "1582", this);
              }
          }
          if (tc.isDebugEnabled())
              Tr.debug(tc, methodName, "cacheName=" + this.cacheName + " returnCode=" + result.returnCode + " size=" + result.dataSize + " more=" + result.bMore);
          return result;
      }