class SSMCache implements Cache {

    @Override
    public void evict(final Object key) {
        if (!cache.isEnabled()) {
            LOGGER.warn("Cache {} is disabled. Cannot evict key {}", cache.getName(), key);
            return;
        }

        if (key != null) {
            final String cacheKey = getKey(key);
            try {
                LOGGER.info("Evict {} from cache {}", key, cache.getName());
                cache.delete(cacheKey);
            } catch (TimeoutException | CacheException | RuntimeException e) {
                logOrThrow(e, "An error has ocurred for cache {} and key {}", getName(), cacheKey, e);
            }
        } else {
            LOGGER.info("Cannot evict from cache {} because key is null", cache.getName());
        }
    }

    public  SSMCache(final com.google.code.ssm.Cache cache, final int expiration, final boolean allowClear, final boolean registerAliases,
            final boolean muteExceptions);
    public  SSMCache(final com.google.code.ssm.Cache cache, final int expiration, final boolean allowClear);
    public  SSMCache(final com.google.code.ssm.Cache cache, final int expiration);
    public  SSMCache(final SSMCache ssmCache, final int expiration);

}