docs: @Override
      public String getCacheDigest(String cacheInstance, boolean useMemoryCacheDigest,
                                   boolean cacheIDOnly, boolean debug) throws javax.management.AttributeNotFoundException { // LI4337-17
  
          if (tc.isEntryEnabled()) {
              Tr.entry(tc, "getCacheDigest: cacheInstance=" + cacheInstance + " useMemoryCacheDigest=" + useMemoryCacheDigest +
                           " cacheIDOnly=" + cacheIDOnly + " debug=" + debug);
          }
          // Get the cache for this cacheInstance
          DCache cache1 = getCache(cacheInstance);
  
          // Get the message digest
          getMessageDigestMD5();
  
          // Calculate total hashcode for cache ids and cache value in memory cache  
          int totalHashcode = cache1.getMemoryCacheHashcode(debug, !cacheIDOnly);
  
          if (cacheIDOnly == true) {
              // Calculate total hashcode for cache ids in PushPullTable  
              totalHashcode += cache1.getCacheIdsHashcodeInPushPullTable(debug);
          }
  
          if (useMemoryCacheDigest == false) {
              // Calculate total hashcode for cache ids and cache value in disk cache  
              try {
                  totalHashcode += cache1.getDiskCacheHashcode(debug, !cacheIDOnly);
              } catch (DynamicCacheException e) {
                  Tr.error(tc, "DYNA1053E", new Object[] { DynaCacheConstants.MBEAN_GET_CACHE_DIGEST, e.getMessage() });
                  throw new AttributeNotFoundException(e.getMessage());
              }
          }
  
          // Convert hashcode to MD5 digest
          String md5Hash = MessageDigestUtility.processMessageDigestForData(MBeans.messageDigestMD5, totalHashcode);
  
          if (tc.isEntryEnabled()) {
              Tr.exit(tc, "getCacheDigest: Exiting. Entire cache hash in MD5 is " + md5Hash + " for cacheInstance = " + cacheInstance);
          }
          return md5Hash;
      }