code: private final synchronized CacheElement getCacheElement(String userid) {
          String m = getCacheAbbrev() + " getCacheElement() ";
          CacheElement cacheElement = null;
          String key = getKey(userid);
          logger.debug(m + "key==" + key);
          if (cache.containsKey(key)) {
              logger.debug(m + "cache already has element");
          } else {
              logger.debug(m + "cache does not have element; create and put");
              CacheElement itemtemp =
                      new CacheElement(userid, getCacheId(), getCacheAbbrev());
              cache.put(key, itemtemp);
          }
          cacheElement = (CacheElement) cache.get(key);
          if (cacheElement == null) {
              logger.error(m + "cache does not contain element");
          } else {
              logger.debug(m + "element retrieved from cache successfully");
          }
          return cacheElement;
      }
docs: /*
  synchronize so that each access gets the same item instance (protect
  against overlapping calls) note that expiration logic of cache element
  changes the element's state -- elements are never removed from cache or
  replaced