code: public synchronized ManageableCacheValue getNextCacheValue() {
          //changes to the map are reflected on the keySet. And its iterator is weakly consistent. so will never
          //throw concurrent modification exception.
          if (iterator.hasNext()) {
              return hashMap.get(iterator.next().getKey());
          } else {
              resetIterator();
              return null;
          }
      }
docs: This method is needed by the cache Manager to go through the cache entries to remove invalid values or
  to remove LRU cache values if the cache has reached its max size.
  
  @return next cache value of the cache.