@Override
 public void onEntryRemoved(Object key) {
   try {
     CacheStore cacheStore = clm.getCacheStore();
     if (cacheStore != null) cacheStore.remove(key);
   } catch (CacheLoaderException e) {
     throw new CacheException(e);
   }
 }
 /**
  * {@inheritDoc} This implementation iterates through a list of work represented by {@link
  * Modification} objects and executes it against the {@link CacheStore}.
  *
  * <p>Current commands supported are:
  *
  * <ul>
  *   <li>STORE
  *   <li>CLEAR
  *   <li>REMOVE
  *   <li>PURGE_EXPIRED
  * </ul>
  */
 public void doWork() throws Exception {
   for (Modification modification : mods)
     switch (modification.getType()) {
       case STORE:
         Store s = (Store) modification;
         cs.store(s.getStoredEntry());
         break;
       case CLEAR:
         cs.clear();
         break;
       case REMOVE:
         Remove r = (Remove) modification;
         cs.remove(r.getKey());
         break;
       case PURGE_EXPIRED:
         cs.purgeExpired();
         break;
       default:
         throw new IllegalArgumentException("Unknown modification type " + modification.getType());
     }
 }