code: public Object put(Object key, Object value)
      {
          synchronized (_cacheL2)
          {
              _cacheL2.put(key, value);
  
              // not really a miss, but merge to avoid big increase in L2 size
              // (it cannot be reallocated, it is final)
              mergeIfNeeded();
          }
  
          return value;
      }
docs: If key is already in cacheL1, the new value will show with a delay,
  since merge L2->L1 may not happen immediately. To force the merge sooner,
  call <code>size()<code>.