code: Entry get(String uuid)
     {
        LRUMap cacheSegment = docNumbers[getSegmentIndex(uuid.charAt(0))];
        // uuid may be invalid
        //        if (uuid.length() != UUID.UUID_FORMATTED_LENGTH) {
        //            return null;
        //        }
        String key = uuid;
        Entry entry;
        synchronized (cacheSegment)
        {
           entry = (Entry)cacheSegment.get(key);
        }
        if (log.isDebugEnabled())
        {
           accesses++;
           if (entry == null)
           {
              misses++;
           }
           // log at most after 1000 accesses and every 10 seconds
           if (accesses > 1000 && System.currentTimeMillis() - lastLog > LOG_INTERVAL)
           {
              long ratio = 100;
              if (misses != 0)
              {
                 ratio -= misses * 100L / accesses;
              }
              StringBuilder statistics = new StringBuilder();
              int inUse = 0;
              for (int i = 0; i < docNumbers.length; i++)
              {
                 inUse += docNumbers[i].size();
              }
              statistics.append("size=").append(inUse);
              statistics.append("/").append(docNumbers[0].maxSize() * CACHE_SEGMENTS);
              statistics.append(", #accesses=").append(accesses);
              statistics.append(", #hits=").append((accesses - misses));
              statistics.append(", #misses=").append(misses);
              statistics.append(", cacheRatio=").append(ratio).append("%");
              log.debug(statistics.toString());
              accesses = 0;
              misses = 0;
              lastLog = System.currentTimeMillis();
           }
        }
        return entry;
     }
docs: Returns the cache entry for <code>uuid</code>, or <code>null</code> if
  no entry exists for <code>uuid</code>.
  
  @param uuid the key.
  @return cache entry or <code>null</code>.