code: public final DOReader get(final String pid) {
  	    DOReader result = null;
  	    mapLock.lock();
  		if (cacheMap.containsKey(pid)) {
  			TimestampedCacheEntry<DOReader> e = cacheMap.remove(pid);
  			LOG.debug("cache hit for {}", pid);
  			result = e.value();
  			// put the cache hit at the end of the FIFO list
  			cacheMap.put(pid, e.refresh());
  		} else {
  		    LOG.debug("cache miss for {}", pid);
  		}
  		mapLock.unlock();
  		return result;
  	}
docs: get an {@link DOReader} from the cache
  
  @param pid
  the pid of the {@link DOReader}
  @return the corresponding {@link DOReader} or null if there is no
  applicable cache content