docs: public synchronized void insert(Object key, Object value) {
          // evict until size < maxSize
          while (isEvictionRequired() && entryLimit > 0 && entryLimit < Integer.MAX_VALUE) {
              evictStaleEntries();
          }
  
          Entry curEntry = new Entry(value);
          Entry oldEntry = (Entry) primaryTable.put(key, curEntry);
  
          if (oldEntry != null && oldEntry.value != null) {
              ArrayList<Object> evictedValues = new ArrayList<Object>();
              evictedValues.add(oldEntry.value);
              for (CacheEvictionListener evictionCallback : cacheEvictionListenerSet) {
                  evictionCallback.evicted(evictedValues);
              }
          }
      }